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

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

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

【问题讨论】:

标签: java eclipse swing user-interface awt


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    相关资源
    最近更新 更多