java - 为什么这个监听器不检测窗口关闭事件?

标签 java swing events awt windowlistener

我正在尝试通过 WindowStateListener 监听单个 Frame 上的事件。

import java.awt.Frame;
import java.awt.Label;

import java.awt.event.WindowStateListener;
import java.awt.event.WindowEvent;

public class UserInterface implements WindowStateListener
{
    public static void main(final String[] arguments)
    {
        UserInterface userInterface = new UserInterface();
    }

    public UserInterface()
    {
        Frame frame = new Frame("Graphics Example");
        frame.addWindowStateListener(this);
        frame.add(new Label("Hello, world!");
        frame.pack();
        frame.setVisible(true);
    }

    public void windowStateChanged(WindowEvent event)
    {
        System.out.println(event.paramString();
    }
}

它适用于最小化事件,但不适用于关闭事件。 WINDOW_CLOSING is definitely a valid WindowEvent value , 和 it's definitely something that Frame can throw .那么为什么不将其传递给 windowStateChanged()

最佳答案

WindowStateListeners 不会收到窗口关闭事件的通知。他们只会收到窗口状态更改的通知,例如图标化或去图标化。如果您想要关闭事件,请实现 WindowListener(或扩展 WindowAdapter)。本教程对此进行了解释http://download.oracle.com/javase/tutorial/uiswing/events/windowlistener.html .

关于java - 为什么这个监听器不检测窗口关闭事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962706/

相关文章:

javascript - 如何更改输入标签对 addEventListener ('change' 的响应)?

java - Android 使用 PlaceAutoCompleteActivity (Google Places API)

java - Android Datepicker maxDate 一周后的今天

java - GIF 在游戏鼠标移动时停止动画

javafx packager 在 Windows 上一个接一个地安装应用程序

android - onChildClick 不适用于我的 ExpandableListView

java - 即时更改数据库列类型

java - 使用 JPanel 在 GUI 中相互覆盖的层

java - 在 Java Swing 中播放视频

c# - 单击两个新点并使用鼠标事件在这两个点之间画一条线