Java: как выбрать только одну ячейку в Jtable, а не всю строку - PullRequest
5 голосов
/ 23 июня 2011

в jTable, я хочу, чтобы, когда пользователь щелкает ячейку, это предложение выводилось на экран:

I am cell in row X and column Y

где x и Y - строка и столбец выбранной ячейки. Но я получаю следующее: когда я нажимаю, например, на ячейку в строке 1 и столбце 4 Я получаю следующее:

I am cell in row 1 and column 0
I am cell in row 1 and column 1
I am cell in row 1 and column 2
....
I am cell in row 1 and column N  ( N = number of columns)

т.е. выбран целый ряд.

это код:

public class CustomTableCellRenderer extends DefaultTableCellRenderer{

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{

    Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

            if(isSelected) System.out.println("I am cell in row "+row+" and column "+column);



    return cell;

}

}

Спасибо за любую помощь.

Ответы [ 5 ]

15 голосов
/ 23 июня 2011

Для этого не следует использовать средство визуализации ячеек.

Включите выбор ячеек в своей таблице (используя setCellSelectionEnabled(true)), затем получите модель выбора таблицы (используя getSelectionModel()) и добавьтеслушатель на этой модели выбора.Каждый раз, когда происходит событие, используйте getSelectedRow() и getSelectedColumn(), чтобы узнать, какая ячейка выбрана.

Обратите внимание, что это даст вам выделенную ячейку, которую можно изменить с помощью мыши или клавиатуры.Если вы просто хотите узнать, где щелкнула мышь, посмотрите ответ KDM.

6 голосов
/ 23 июня 2011
myTable.setRowSelectionAllowed(false);
1 голос
/ 23 июня 2011

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

0 голосов
/ 31 мая 2016

myTable.setCellSelectionEnabled (истина);

0 голосов
/ 12 января 2012

Измените if(isSelected) на if (isSelected && hasFocus).Это будет печатать только для выбранной ячейки, а не для выбранной строки.

Ответ mKorbel также должен работать ...

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