Как заставить главное окно реагировать на щелчок таблицы - PullRequest
0 голосов
/ 07 мая 2010

Я новый пользователь Java Swing. Мне нужно иметь возможность создавать всплывающее окно с информацией о строке, когда пользователь нажимает на эту строку. Мне удалось включить реакцию на событие mouseClick в мой класс таблицы, и у меня есть информация о строке. Как я могу уведомить главное окно о событии, чтобы оно отображало диалоговое окно / всплывающее окно?

Ответы [ 3 ]

1 голос
/ 07 мая 2010

Есть несколько способов справиться с этим:

1) Пользовательский класс таблицы может иметь собственный прослушиватель (шаблон наблюдателя), который он затем вызывает при каждом щелчке

2) Вы можете заставить таблицу вызывать метод в главном окне - т.е. передавать в главное окно как часть построения таблицы

3) Можно зарегистрировать главное окно в качестве прослушивателя таблицы (то есть прослушивателя мыши) и вместо этого обработать события.

Есть другие, я уверен. Это те, которые я видел чаще всего. В зависимости от размера, объема и цели написанного программного обеспечения, у каждого есть свои достоинства и недостатки. Является ли это школьным проектом, игрушкой, написанной для изучения Swing, или он предназначен для более долгосрочного, более крупного проекта? Если это последнее, я бы порекомендовал посмотреть обсуждения архитектуры Model View Controller (MVC), поскольку, по моему опыту, в долгосрочной перспективе обслуживание кода будет намного проще.

Удачи.

1 голос
/ 07 мая 2010

Вы можете сделать это так:

myTable.addMouseListener(new MouseAdapter() {
        public void mouseReleased(MouseEvent e) {
            if(SwingUtilities.isRightMouseButton(e)) {
                int index = myTable.rowAtPoint(e.getPoint());
                JPopupMenu popup = new JPopupMenu();
                popup.add(myMenuAction);
                popup.show(e.getComponent(), e.getX(), e.getY());
            }
        }
});

А затем выполните действие myMenuAction, где вы используете index из таблицы.

1 голос
/ 07 мая 2010

Просто вызовите метод в главном окне, чтобы выполнить действие

...