我用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
是一个很好的实践这一事实之外,布局管理器可以消除进行此调用以及管理组件的大小和定位的需要。这是使用布局管理器的一个很好的理由。