我正在使用Netbeans IDE制作一个gui应用程序。我有一个内置JPanel的JFrame。单击按钮后,我想在第一个内部显示不同的JPanel。另一个JPanel在另一个文件中。我该怎么做呢?如果这不实用,我不介意用第二个替换第一个JPanel。
我尝试了以下但是它似乎不起作用。我是Java和Gui编程的新手,所以我很感激我能得到的任何帮助。
private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {
JPanel2 jPanel2 = new JPanel2();
JPanel1.add(jPanel2);
}
答案 0 :(得分:6)
请参阅Container#add
方法的javadoc:
此方法更改与布局相关的信息,因此使组件层次结构无效。如果已显示容器,则必须在此后验证层次结构,以显示添加的组件。
因此,添加面板是不够的,但您还必须再次验证层次结构,例如通过调用
JPanel1.validate();
JPanel1.repaint();
在他的回答中使用CardLayout
作为@Andrew建议可能是一个更好的选择,然后手动替换面板
两个附注:
JPanel1.add
来电将成为jPanel1.add
Jxxx
Swing类。查看您的班级名称JPanel1
和JPanel2
,您正是这样做的。最好使用可用的API来自定义这些类,然后再扩展它们。答案 1 :(得分:3)
您还必须添加以下代码,例如更改才能生效:
jPanel1.validate();
jPanel1.repaint();
答案 2 :(得分:3)
使用CardLayout,如图here所示。
答案 3 :(得分:0)
newPanel obj = new newPanel ();
setLayout(new BorderLayout());
add(obj ,BorderLayout.EAST ,1);//3rd argument is index
repaint();
revalidate();