Определите, какая ячейка JTable нажата - PullRequest
20 голосов
/ 25 января 2011

Когда пользователь щелкает ячейку в JTable, как мне определить строку и столбец ячейки, по которой щелкнули?Как бы я показал эту информацию в JLabel?

Ответы [ 5 ]

34 голосов
/ 22 мая 2011

Существующий ответ работает, но есть альтернативный метод, который может работать лучше, если вы не включаете выбор ячейки.Внутри вашего MouseListener сделайте что-то вроде этого:

public void mouseClicked(java.awt.event.MouseEvent event) {
    int row = theTable.rowAtPoint(event.getPoint());
    int col = theTable.columnAtPoint(event.getPoint());
    // ...
17 голосов
/ 25 января 2011

Вы можете использовать следующие методы в JTable для извлечения строки и столбца выбранной ячейки:

int rowIndex = table.getSelectedRow();
int colIndex = table.getSelectedColumn();

И добавьте SelectionListener в таблицу, чтобы перехватить событие, когда таблица выбрана.

3 голосов
/ 27 июня 2016

у меня работает !!!

jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
 public void mouseClicked(java.awt.event.MouseEvent evt) {
    int row = jTable1.rowAtPoint(evt.getPoint());
    int col = jTable1.columnAtPoint(evt.getPoint());
    if (row >= 0 && col >= 0) {


    }
 }
});
1 голос
/ 12 апреля 2017

Я обнаружил, что когда столбцы скрыты / переупорядочены, columnAtPoint возвращает индекс видимого столбца, а это не то, что мне было нужно.Код, который работал для меня это

int row = theTable.convertRowIndexToModel(theTable.rowAtPoint(event.getPoint()));
int col = theTable.convertColumnIndexToModel(theTable.columnAtPoint(event.getPoint()));
1 голос
/ 25 января 2011

ты пробовал addMouseListener()?Я надеюсь, что вы собираетесь использовать Swing JTable.

...