按钮单击后将JPanel添加到另一个JPanel

Ind*_*411 1 java swing netbeans runtime jpanel

我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*bin 6

请参阅Container#add方法的javadoc :

此方法更改与布局相关的信息,因此使组件层次结构无效.如果已显示容器,则必须在此后验证层次结构以显示添加的组件.

因此,添加面板是不够的,但您还必须再次验证层次结构,例如通过调用

JPanel1.validate();
JPanel1.repaint();
Run Code Online (Sandbox Code Playgroud)

CardLayout在他的回答中使用as @Andrew可能是一个更好的选择,然后手动替换面板

两个旁注:

  • 学习并尊重Java命名约定(例如,类的实例以小写开头).所以你的JPanel1.add电话会变成jPanel1.add
  • 在大多数情况下,无需扩展JxxxSwing类.查看您的班级名称JPanel1,JPanel2您正是这样做的.最好使用可用的API来自定义这些类然后扩展它们.