关闭窗口而不关闭Application

时间:2016-05-07 15:00:28

标签: java user-interface

下午好!

我有这段代码:

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,但仍未成功。两个窗口都关闭了。

提前致谢, 迪奥戈桑托斯

1 个答案:

答案 0 :(得分:1)

  

setVisible行给出了一个错误,它不能被我理解的静态上下文引用,因为我需要框架的引用。我该如何解决这个问题?

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

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

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