2010-06-24 3 views
1

Привет, У меня есть только одна панель JDialog в приложении Java. Я хочу сделать ее невидимой, если она потеряла фокус. Я пробовал другой метод, но не смог вызвать ни одно из событий фокуса окна. Вот мой код:Скрыть окно JDialog, когда окно потеряло фокус

public void windowGainedFocus(WindowEvent e) { 
    System.out.println("gained focus"); 
    } 

    public void windowLostFocus(WindowEvent e) { 
    System.out.println("lost focus"); 
    } 

ответ

2

Ответы на события фокуса могут быть очень сложными. Мой опыт заключался в том, что в значительной степени в любое время, когда кто-то пытался делать нестандартные вещи с особым вниманием, они в конце концов сожалеют об этом. Не в последнюю очередь среди проблем является то, что на самом деле это не все, что переносится - на многих дисплеях на базе X-Windows используется функция focus-follow-mouse, которая может привести к тому, что фокус будет удален, когда вы этого не ожидаете, в результате чего увольнение вашего диалога.

Тем не менее, официальное руководство Sun находится здесь: http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html. Если я правильно помню, вы можете прикрепить PropertyChangeListener к KeyboardFocusManager, и это будет вызвано для изменений фокуса: http://java.sun.com/javase/6/docs/api/java/awt/KeyboardFocusManager.html#addPropertyChangeListener%28java.beans.PropertyChangeListener%29

+0

Я расскажу больше о своей проблеме. Я использую систему linux. У меня есть JDialog box с jEditPane. Это окно имеет фиксированный размер. Когда фокус потерян, я хочу, чтобы это окно было сведено к минимуму в лоток. – Joe

+0

Предлагаемые ниже WindowListeners, похоже, сработают. Чувство моего чувства заключается в том, что это в конечном итоге немного раздражает большое количество пользователей. Вы считали, что просто помещаете его в JWindow с фиксированным размером, а затем позволяете пользователю просто минимизировать его, когда они этого не хотят? – Curtis

1

Используйте WindowListener и обработайте событие windowDeactivated.

Смежные вопросы