在另一个类的JFrame上显示JPanel

CodeMonkey210399

我对NetBeans IDE和Java都不熟悉。我在JFrame上布置了一个JPanel,并说JPanel上面有按钮。此JPanel在JFrames类中。当单击这些按钮之一时,我想停止显示此JPanel,并在另一个类中显示另一个JPanel。我正在使用GUI设计器,因此面板位于不同的类中。

JFrame类中的按钮单击事件具有以下按钮之一:

    private void buttonActionPerformed(ActionEvent e) {                                         
    panel1.setVisible(false);
    Panel2 panel2 = new Panel2();
    this.add(panel2);
    panel2.setVisible(true);

这将产生panel1消失的结果,但是由于panel2不显示而留下空白的Jframe。

我已经看过CardLayout,但是我需要面板上的按钮来发出命令,而不是在另一个面板上围绕CardLayout的面板交换按钮。

编辑:已经重写了问题以实际提供上下文,而不仅仅是“帮助请”,因为有人告诉我我所问的内容太广泛了,这是完全正确的。我才刚刚开始学习Java,所以如果仍然要对此道歉,请您道歉。

幽灵猫

让我们在这里尝试帮助一下...

首先,在动作侦听器代码中仅做“几乎”什么都不是一个好主意。尤其是在该侦听器中实例化一个新的面板对象是一个坏主意。

一种更合理的方法:在前面创建所有面板对象像:当您的应用程序启动时,可能会包含所需面板对象的列表。然后,在动作侦听器代码中,只需添加需要显示的代码,然后删除不再需要的代码即可。

另请注意:

  • 您在动作侦听器中执行的所有操作都会在事件分配器线程上发生(转到Google那个词)。在这里,这可能是您想要的,但通常不是。
  • 仅调用setVisible()是不够的。您可能必须触发布局管理器进行重新绘制。因此,决定使用特定的布局管理器,并研究动态添加/隐藏组件的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章