当用户点击“x”按钮时,最小化窗口(而不是关闭它)?这个Java Swing代码有什么问题?

时间:2013-12-20 17:33:19

标签: java swing user-interface windowlistener

我必须更改扩展* JFrame 的类的正常行为。

新行为包括以下事实:当用户单击“X”按钮时,窗口不会关闭,但在工具栏或操作系统中最小化。

所以我有一个名为 MainFrame 的类,它扩展了 JFrame ,最初是这样的:

public class MainFrame extends JFrame {

    public MainFrame() {

        setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

        // do something
    }

    // OTHER METHODS()   
}

所以根据我的理解来获得这种行为,我必须改变前一行:

setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

成:

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

以这种方式当用户点击X按钮时窗口没有关闭,然后我必须添加一个监听器,当用户点击X按钮时最小化窗口,如下所示:

addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        ((JFrame)e.getSource()).setState(JFrame.ICONIFIED);
    }
});

我认为这应该有用但我的问题是我不知道我要把它放在哪里!!!

我试着把它放到我的构造函数中,但是Eclipse给我留下了一些错误信息:

- WindowAdapter cannot be resolved to a type
- The method addWindowListener(WindowListener) in the type Window is not applicable for the arguments (new WindowAdapter()
 {})

为什么呢?我错过了什么?我怎么解决?

1 个答案:

答案 0 :(得分:0)

您是否导入以下两项内容?

java.awt.event.WindowAdapter;
java.awt.event.WindowEvent;

特别是WindowAdapter ...

另外,关于将addWindowListener()方法放在何处的问题,构造函数是合适的。