[英]Adding JPanel onto another JPanel after button click
我正在使用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);
}
请参见Container#add
方法的javadoc:
此方法更改与布局有关的信息,因此使组件层次结构无效。 如果已经显示了容器,则此后必须验证层次结构才能显示添加的组件。
因此添加面板是不够的,但是您还必须再次验证层次结构,例如通过调用
JPanel1.validate();
JPanel1.repaint();
使用@Andrew在他的答案中建议的CardLayout
可能是比手动替换面板更好的选择
两个旁注:
JPanel1.add
调用将变为jPanel1.add
Jxxx
Swing类。 查看您的类名称JPanel1
和JPanel2
您正是在这样做。 最好使用可用的API来自定义这些类,然后对其进行扩展。 您还必须添加以下代码,例如您的更改才能生效:
jPanel1.validate();
jPanel1.repaint();
使用CardLayout ,如图所示这里 。
newPanel obj = new newPanel ();
setLayout(new BorderLayout());
add(obj ,BorderLayout.EAST ,1);//3rd argument is index
repaint();
revalidate();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.