下午好!
我有这段代码:
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);
}
}
我想要做的是当我点击“伏特”按钮(在另一个窗口,而不是在你看到的“主”窗口)时,它会关闭窗口但不关闭应用程序。 setVisible行给出了一个错误,它不能被我理解的静态上下文引用,因为我需要框架的引用。我该如何解决这个问题?
编辑:将JFrame更改为JDialog,但仍未成功。两个窗口都关闭了。
提前致谢, 迪奥戈桑托斯
答案 0 :(得分:1)
setVisible行给出了一个错误,它不能被我理解的静态上下文引用,因为我需要框架的引用。我该如何解决这个问题?
您可以访问生成事件的组件。然后,您可以找到该组件所属的窗口。这将为您提供隐藏任何窗口的通用代码:
//setVisible(false);
JButton button = (JButton)e.getSource();
Window window = SwingUtilities.windowForComponent(button);
window.setVisible(false);
您还可以查看Closing an Application。 ExitAction
可以添加到您的按钮中。现在,当您单击按钮时,它就像单击窗口的“x”(关闭)按钮。这是您将为窗口指定的默认关闭操作。