让 JButton 打开一个新的 JPanel

Posted

技术标签:

【中文标题】让 JButton 打开一个新的 JPanel【英文标题】:Having a JButton open a new JPanel 【发布时间】:2013-02-09 05:36:26 【问题描述】:

我正在创建一个当前有 3 个类的程序。除了 2 个其他 JPanel 类之外,这些还包括 JFrame 类。有谁知道我如何在一个 JPanel 类中创建一个 JButton 删除该特定 JPanel 并让 JFrame 添加一个新 JPanel(来自另一个类)?

例如,假设JFrame类被称为frame,两个JPanel类被称为panel1和panel2。如果在 panel1 中单击了一个按钮,如何告诉框架删除 panel1 并添加 panel2?

【问题讨论】:

使用CardLayout 表示要更改的面板,如this answer 所示。 对于example。 【参考方案1】:

这取决于你对“删除”这个词的意思。

一个好的方法是通过 hidemode 属性使用 MigLayout。表单的初始状态将包含 JFrame 中的两个面板,但第二个面板将不可见。

当您按下第一个 JPanel 的按钮时,它会将这个面板的可见性设置为 false,并将第二个面板的可见性设置为 true。

另一方面,如果您想从框架中完全删除第一个面板,请使用方法 panel.setName(panelsName) 为其命名,然后检索 JFrame 的每个子组件并将它们放入一个集合。

然后遍历这个集合,并检查每个组件的名称。

如果 component.getName().equals(panelsName) 然后使用 frame.remove(component) 方法摆脱它。之后,您可能必须在框架中调用 validate 和 repaint,但我不确定是否有必要。试试看吧;)

【讨论】:

以上是关于让 JButton 打开一个新的 JPanel的主要内容,如果未能解决你的问题,请参考以下文章

Java:无法让 JButton 水平紧贴文本

Java运行其他类的main方法,当JButton被按下时

如何编写 jButton 以将笔记本电脑或设备切换到省电模式

如何让 Swing 将我自己的 HTMLEditorKit 用于 JLabel/JButton/等

如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口?

我可以让 Swing JButton 的边距更小吗?