Max*_*xpm 4 java events swing awt windowlistener
我正在尝试在单个Frame
通道上侦听事件WindowStateListener
.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于最小化事件,但不适用于近似事件. WINDOW_CLOSING
绝对是一个有效的WindowEvent
价值,它肯定是Frame
可以抛出的东西.那么为什么不传递给它windowStateChanged()
呢?
不会向WindowStateListeners通知窗口关闭事件.它们仅被通知窗口状态的更改,例如图标化或取消图标化.如果您想要关闭事件,请实现WindowListener(或扩展WindowAdapter).本教程将其解释为http://download.oracle.com/javase/tutorial/uiswing/events/windowlistener.html.
小智 5
您可以使用它。
frame.addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(WindowEvent winEv)
}}
Run Code Online (Sandbox Code Playgroud)
这肯定会编译。
class TestSnippet {
public static void main(Sring[] args) {
// START: copy/pasted snippet
frame.addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(WindowEvent winEv)
}}
// END: copy/pasted snippet
}
}
Run Code Online (Sandbox Code Playgroud)
(路人注意)嗯,除了..
I:\proj\TestSnippet.java:7: ';' expected
public void windowClosing(WindowEvent winEv)
^
I:\proj\TestSnippet.java:9: ')' expected
}}
^
2 errors
Tool completed with exit code 1
Run Code Online (Sandbox Code Playgroud)