【问题标题】:closing an opened frame without closing the current关闭打开的框架而不关闭当前框架
【发布时间】:2021-01-10 15:12:41
【问题描述】:

我想在打开另一个框架时关闭我的homeScreen 框架

public class MainClass {

    public static void main(String[] args) {
        JFrame homeScreen = new JFrame("HomeScreen");
        homeScreen.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        EsPanel2 panelloPrimo = new EsPanel2();
        homeScreen.add(panelloPrimo);
        homeScreen.setBounds(0, 0, 690, 470);
        homeScreen.setLocationRelativeTo(null);
        homeScreen.setVisible(true);
    }
}

EsPanel2 是一个扩展 JPanel 的类,并有一个按钮,单击该按钮后,通过按钮的 ActionListener 打开一个全新的框架。

【问题讨论】:

  • 将对homeScreen 的引用传递给EsPanel2。然后在打开第二帧后调用homeScreen.setVisible(false)
  • @RetoHöhener 如何将 mainClass 的引用传递给 Espanel2 类?我应该做任何铸造吗?对不起,我是个菜鸟
  • 对于此类基本问题,最好阅读 Java 教程或询问同行(或查看我的个人资料)。
  • 1) 参见The Use of Multiple JFrames, Good/Bad Practice? 2) 使用CardLayout,如this answer 所示。 3) Java GUI 必须在不同的语言环境中使用不同的 PLAF 在不同的操作系统、屏幕尺寸、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 ..的布局填充和边框。

标签: java swing user-interface windowsbuilder


【解决方案1】:

有一个按钮,点击它会通过按钮的 ActionListener 打开一个全新的框架

您可以在ActionListener 中引用带有逻辑的开放框架。比如:

// close existing frame

JButton button = (JButton)event.getSource();
Window window = SwingUtilities.windowForComponent(button);
window.dispose();

// create and show new frame

JFrame frame = new JFrame(...);
...
frame.setVisible( true );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2012-03-25
    • 2019-03-17
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多