gpt4 book ai didi

java - 关闭窗口而不关闭应用程序

转载 作者:行者123 更新时间:2023-12-01 09:57:23 25 4
gpt4 key购买 nike

下午好!

我有这个代码:

private static class ClickListener implements ActionListener {

public ClickListener() {

}

@Override
public void actionPerformed(ActionEvent e) {
JFrame frame = new JFrame();
JLabel label = new JLabel("Opção Indisponivel");
JPanel panel = new JPanel();
frame.add(label, BorderLayout.CENTER);
frame.setSize(300, 400);
JButton button = new JButton("Voltar");
button.addActionListener(new CloseWindowListener());
panel.add(button);
frame.add(panel, BorderLayout.SOUTH);
frame.setVisible(true);
}
}

private static class CloseWindowListener implements ActionListener {

public CloseWindowListener() {
}

@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
}

我想要做的是,当我单击“voltar”按钮(位于另一个窗口中,而不是您所看到的“主”窗口中)时,它会关闭窗口,但不会关闭应用程序本身。 setVisible 行给了我一个错误,即它不能被静态上下文引用,我理解这是因为我需要框架的引用。我该如何解决这个问题?

编辑:将 JFrame 更改为 JDialog 但仍然没有成功。两个窗口都关闭。

提前致谢,迪奥戈·桑托斯

最佳答案

The setVisible line gives me an error about that it cannot be referenced by a static context which I understand because I need the reference of the frame. How do I solve this?

您可以访问生成事件的组件。然后就可以找到该组件所属的窗口。这将为您提供隐藏任何窗口的通用代码:

//setVisible(false);
JButton button = (JButton)e.getSource();
Window window = SwingUtilities.windowForComponent(button);
window.setVisible(false);

您还可以查看Closing an ApplicationExitAction 可以添加到您的按钮中。现在,当您单击该按钮时,就像单击窗口的“x”(关闭)按钮一样。这就是您为窗口指定的任何默认关闭操作将被调用的情况。

关于java - 关闭窗口而不关闭应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com