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()また、メソッドの先頭にa を追加します。

コンポーネントをパネルに追加するには、次のようにします。

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

または、ボード クラスのコンストラクターで、レイアウトを設定してコンポーネントを追加できます。

于 2013-07-01T03:54:11.270 に答える