繁体   English   中英

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

[英]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可能是比手动替换面板更好的选择

两个旁注:

  • 学习并遵守Java命名约定(例如,类的实例以小写字母开头)。 因此您的JPanel1.add调用将变为jPanel1.add
  • 在大多数情况下,无需扩展Jxxx Swing类。 查看您的类名称JPanel1JPanel2您正是在这样做。 最好使用可用的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM