0

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

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

4

1 回答 1

1

好吧,这取决于您对“删除”一词的含义。

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

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

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

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

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

于 2013-02-23T20:25:52.717 回答