我正在创建一个当前有 3 个类的程序。除了 2 个其他 JPanel 类之外,这些还包括 JFrame 类。有谁知道我如何在一个 JPanel 类中制作一个 JButton 删除该特定的 JPanel 并让 JFrame 添加一个新的 JPanel(来自另一个类)?
例如,假设JFrame 类称为frame,两个JPanel 类称为panel1 和panel2。如果在 panel1 中单击按钮,如何告诉框架删除 panel1 并添加 panel2?
我正在创建一个当前有 3 个类的程序。除了 2 个其他 JPanel 类之外,这些还包括 JFrame 类。有谁知道我如何在一个 JPanel 类中制作一个 JButton 删除该特定的 JPanel 并让 JFrame 添加一个新的 JPanel(来自另一个类)?
例如,假设JFrame 类称为frame,两个JPanel 类称为panel1 和panel2。如果在 panel1 中单击按钮,如何告诉框架删除 panel1 并添加 panel2?
好吧,这取决于您对“删除”一词的含义。
一个好的方法是使用 MigLayout 使用 hidemode 属性。表单的初始状态将包含 JFrame 中的两个面板,但第二个面板将不可见。
当您按下第一个 JPanel 的按钮时,它会将这个面板的可见性设置为 false,并将第二个面板的可见性设置为 true。
另一方面,如果要从框架中完全删除第一个面板,请使用方法 panel.setName(panelsName) 为其命名,然后检索 JFrame 的每个子组件并将它们放入集合中。
然后遍历这个集合,并检查每个组件的名称。
如果 component.getName().equals(panelsName) 然后使用 frame.remove(component) 方法摆脱它。之后,您可能必须在框架中调用 validate 和 repaint,尽管我不确定是否有必要。试试看;)