Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Как поймать уход фокуса с моего окна/фрейма?


Автор: Proger10 29.4.2009, 19:34
В поиске нашёл много тем по установке фокуса на Swing компоненты. А вот если у меня некоторый JFrame, можно ли как-то поймать потерю фокуса с этого окна?

Автор: CrasyMen 29.4.2009, 20:02
может метод isActive() подойдет? Возвращает true если окно активно.

Автор: Proger10 29.4.2009, 20:19
Т.е. переодически таймером слушать в фокусе ли окно?
Может быть.. интересно, есть ли ещё методы определения этого?

Автор: CrasyMen 29.4.2009, 21:34
Код

import javax.swing.*;
import java.awt.event.FocusListener;
import java.awt.event.FocusEvent;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setVisible(true);
        frame.addFocusListener(new FocusListener() {
            public void focusGained(FocusEvent e) {

            }

            public void focusLost(FocusEvent e) {
                // тут пишеш что тебе надо делать при потере фокуса
            }
        });
    }
}


Добавлено через 4 минуты
Вместо FocusListener можна использовать FocusAdapter

Автор: CrasyMen 29.4.2009, 21:51
Вот http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html про фокус много интересного написано 

Автор: CrasyMen 30.4.2009, 22:50
Подходит такое решение? Если да, то отметь вопрос решенным.

Автор: Proger10 1.5.2009, 00:49
Цитата(CrasyMen @ 29.4.2009,  21:34)
Код

import javax.swing.*;
import java.awt.event.FocusListener;
import java.awt.event.FocusEvent;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setVisible(true);
        frame.addFocusListener(new FocusListener() {
            public void focusGained(FocusEvent e) {

            }

            public void focusLost(FocusEvent e) {
                // тут пишеш что тебе надо делать при потере фокуса
            }
        });
    }
}


Добавлено @ 21:38
Вместо FocusListener можна использовать FocusAdapter

А у Вас этот код работает корректно?

Ява на него не ругается, но и фокусные сообщения не возникают.
У меня линукс, может на винде оно действительно корректно работает..

Добавлено через 2 минуты и 44 секунды
О, нашёл фокусировку JFrame'a!
http://java.sun.com/docs/books/tutorial/uiswing/events/windowlistener.html
вот это работает!

Автор: CrasyMen 1.5.2009, 00:57
да все работает. я в 15 строчке написал System.out.println("focus lost"); 
когда переключаюсь на другое окно в консоль выводит "focus lost"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)