你没有计算
hgap
和
vgap
FlowLayout
在里面这些行为就像一个自然边界。
您所需要做的就是更改
JPanel
到
new JPanel(new FlowLayout(FlowLayout.RIGHT), 0, 0)
示例代码:
public static void main(String[] args) {
JFrame f = new JFrame();
TestA b = new TestA("X");
JPanel buttonContainer = new JPanel(new FlowLayout(FlowLayout.RIGHT, 0, 0));
buttonContainer.setBackground(Color.GREEN);
buttonContainer.add(b);
f.add(buttonContainer);
f.pack();
f.setVisible(true);
}
TestA
LynxButton
class TestA extends JButton {
public TestA() {
super.setContentAreaFilled(false);
}
public TestA(String text) {
super(text);
super.setContentAreaFilled(false);
}
@Override
protected void paintComponent(Graphics g) {
Color pressedColor = Color.RED;
if (getModel().isPressed()) {
g.setColor(pressedColor);
} else if (getModel().isRollover()) {
g.setColor(pressedColor);
} else {
g.setColor(getBackground());
}
g.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(g);
}
@Override
public void setContentAreaFilled(boolean b) {
}
}