1
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。我究竟做错了什么?谢谢!

4

1 回答 1

4

paintComponent()方法仅用于绘画。您永远不会以绘画方法创建组件并将其添加到面板。摆脱那个代码。

super.paintComponent()还要在方法的开头添加一个。

要将组件添加到面板,您可以执行以下操作:

Board board = new Board();
board.setLayout(...)
board.add(...);

或者在板类的构造函数中,您可以设置布局并添加组件。

于 2013-07-01T03:54:11.270 回答