动态地将JButton添加到不能与Netbeans一起工作的JPanel中



我用Netbeans 7.3创建了一个JFrame Class,并从调色板中添加了两个面板。我在第一个面板中添加了一个按钮,我想在第二个面板(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();
}             

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

除了调用repaint是一个很好的实践这一事实之外,布局管理器可以消除进行此调用以及管理组件的大小和定位的需要。这是使用布局管理器的一个很好的理由。

最新更新