Обнаружение изменений выбора в JTable - PullRequest
5 голосов
/ 28 марта 2011

Я пытаюсь найти способ обнаружить изменения в каком столбце пользователь выбрал в JTable.Я немного покопался, и кажется, что вам нужно каким-то образом использовать TableColumnModelListener для обнаружения изменений, но, похоже, это не вызывает событие при изменении выбранного столбца.

Ответы [ 3 ]

13 голосов
/ 28 марта 2011

Вам нужно добавить ListSelectionListener вместо этого. Это будет захватывать события выбора. Вот несколько учебных пособий по Swing, которые идут глубже:

http://download.oracle.com/javase/tutorial/uiswing/events/listselectionlistener.html http://download.oracle.com/javase/tutorial/uiswing/components/table.html#selection

2 голосов
/ 28 марта 2011

Из того, что я прочитал, я думаю, что вам нужно добавить MouseListener в вашу таблицу, которая, например, в mouseClicked будет получать строки и столбцы, используя следующий код ниже:



table.addMouseListener(new MouseListener()
{
    @Override
    public void mouseClicked(MouseEvent e)
    {   
       Point pnt = evt.getPoint();
       int row = table.rowAtPoint(pnt);
       int col = table.columnAtPoint(pnt);
    }
}

Это должно отлично сработать, я сам раньше использовал подобное. Кстати, это похоже на проблему, которую я нашел на coderanch, ссылка: http://www.coderanch.com/t/332737/GUI/java/detect-single-click-any-cell

Удачи, Боро

0 голосов
/ 28 марта 2011

Если под «изменением» вы подразумеваете изменение значения ячейки, то вы можете использовать AbstractTableModel и реализовать метод fireTableCellUpdated

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...