2013-07-01 81 views
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。我究竟做错了什么?谢谢!JPanel只显示矩形而不是JButton

+2

*“我在做什么错了?”*在'paintComponent'方法内添加/修改组件 – MadProgrammer

回答

4

paintComponent()方法仅用于绘画。您绝不会使用绘画方法创建组件并将其添加到面板中。摆脱那些代码。

在方法开始时还要添加一个super.paintComponent()

将组件添加到面板,你这样做:

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

或在板类的构造函数可以设置布局和添加组件。