void setUpGUI() {
JFrame frame = new JFrame();
frame.setContentPane(new Board());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
class Board extends JPanel {
@Override
public void paintComponent(Graphics g) {
setLayout(new GridLayout(10, 9));
JButton b = new JButton("hello");
add(b);
g.setColor(Color.orange);
g.fillRect(20, 50, 100, 100);
}
}
出于某种原因,代码只显示了矩形,没有显示 JButton。我究竟做错了什么?谢谢!
最佳答案
paintComponent()
方法仅用于绘画。您永远不会在绘画方法中创建组件并将其添加到面板。删除该代码。
还在方法的开头添加一个super.paintComponent()
。
要将组件添加到面板,您可以执行以下操作:
Board board = new Board();
board.setLayout(...)
board.add(...);
或者在板类的构造函数中,您可以设置布局和添加组件。
关于java - JPanel 只显示矩形而不显示 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17397187/