#java #swing #events #awt #windowlistener
#java #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();
}
}
Он отлично работает для событий минимизации, но не для событий закрытия. WINDOW_CLOSING
это определенно допустимое WindowEvent
значение, и это определенно то, что Frame
может выдать. Так почему же он не передается windowStateChanged()
?
Ответ №1:
WindowStateListeners не уведомляются о событиях закрытия окна. Они уведомляются только об изменениях состояния окна, таких как iconified или de-iconified. Если вы хотите закрыть события, реализуйте WindowListener (или расширьте WindowAdapter). Этот учебник объясняет это http://download.oracle.com/javase/tutorial/uiswing/events/windowlistener.html .
Ответ №2:
Вы можете использовать это.
frame.addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(WindowEvent winEv)
}}
это определенно скомпилировалось бы.
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
}
}
(Заметки прохожего) Ну, за исключением..
I:projTestSnippet.java:7: ';' expected
public void windowClosing(WindowEvent winEv)
^
I:projTestSnippet.java:9: ')' expected
}}
^
2 errors
Tool completed with exit code 1
Комментарии:
1. это определенно скомпилировалось бы. В этом прослушивателе мы можем выполнить задачу, которую мы должны выполнить, когда мы закрываем окно.
2. Хорошо, теперь я понимаю, что вы пытались сказать. Я пишу.
3. Не стесняйтесь редактировать мои дополнения. Но, пожалуйста, исправьте фрагмент (или сделайте его еще более общим) в то же время. 1 для указателя на
WindowListener
.