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


Автор: enzaime 5.11.2013, 15:07
Привет всем.  Столкнулся с небольшой проблемой, не могу понять в какой момент времени компонент теряет мышь. Суть такая - есть несколько объектов к ним прикреплен слушатель мыши. Имея данный класс, описывающий объект, как можно узнать, когда мышь передается другому объекту этого класса. Например:
Класс, описывающий таблицу
Код

public class Table extends JTable
{
    public Table()
    {
        super(5, 5);
        addMouse();
    }
    public void addMouse()
    {
        
        addMouseListener(new MouseAdapter() 
        {

            @Override
            public void mousePressed(MouseEvent me) {
                super.mousePressed(me);
                setRowSelectionAllowed(true);
                
                setRowSelectionInterval(1, 1);
            }
            
        }
                );
    }
}

Панель, куда все добавляется
Код

public class Panel extends JPanel{
    public Panel()
    {
        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
        ArrayList<Table> t=new ArrayList<>();
        for(int i=0;i<3;i++)
            t.add(new Table());
        for(int i=0;i<t.size();i++)
            add(t.get(i));
    }
    
}

Тело главного класса
Код

JFrame f=new JFrame();
        Panel p=new Panel();
        f.add(p);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true); 
        f.pack();


Нужно убрать выделение с таблицы, если был щелчок по другой таблице. Скажу сразу, что вариант с наблюдением панели за таблицей мне известен и действительно всё работает, но мне интересно может кто-то знает другой вариант как через слушателей всё это сделать.

Автор: Magistrus 11.11.2013, 10:54
FocusListener тебе в помошь 

Автор: enzaime 11.11.2013, 15:58
А он разве не с текстовыми полями работает? Там вроде как определяется фокус ввода. Он вроде как определяет на каком компоненте текстовый курсор, то есть если ввода в таблицу нет то и проверка на фокус таблицы даст 0 всегда, то есть если в поле таблицы есть текстовый фокус, значит и есть фокус мыши(выделение строки). (Обратно) Но если есть фокус мыши, то не обязательно должен быть текстовый фокус.

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