将JButton动态添加到不与Netbeans一起使用的JPanel

时间:2013-04-03 09:23:09

标签: java swing layout jframe jpanel

我使用JFrame Class创建了Netbeans 7.3,并在调色板中添加了两个面板。 我在第一个面板中添加了一个按钮,我想在第二个面板(topoPane)中添加一个新按钮。

下面是我为此编写的按钮点击事件。但是,即使事件被调用,该按钮也不会被添加到面板中。 请告诉我它有什么问题。

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) 
{                                      
    // TODO add your handling code here:

    System.out.println("Creating the Button");        
    JButton but = new JButton();
    but.setBackground(Color.red);
    but.setText("New Button");
    but.setBounds(500, 500, 500, 500);

    topoPane.add(but);
    topoPane.revalidate();

}             

1 个答案:

答案 0 :(得分:1)

通过使用setBounds,很明显您使用null布局。因此,您需要调用repaint()作为没有布局的容器,不会自动重新绘制revalidate上添加的组件。

除了调用repaint是一个好习惯之外,布局管理器可以删除进行此调用的需要,同时管理组件的大小调整和定位。这样就可以使用layout manager