У меня есть фрагмент кода, определяющий щелчок правой кнопкой мыши на JTable:
jt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON3) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
System.out.println(row + column);
System.out.println(column);
System.out.println("right click!");
}
}
});
Мне нужны значения строки и столбца, чтобы система вычисляла содержимое ячейки, по которой щелкнули, чтобы я мог запускать функции и прочее, но для моей текущей таблицы jt:
Когда я щелкаю правой кнопкой мыши по любой ячейке в строке, возвращается "правый щелчок!" (что правильно) и "-2 -1" для значений строки и столбца. Учитывая, что они находятся в разных столбцах таблицы, значения строк и столбцов должны быть положительными, а значения столбцов должны быть разными. Я не понимаю, что здесь происходит, из-за чего этот код не работает.
Примечание: ранее у меня был if (e.getClickCount() == 2) { do stuff }
, прежде чем я заменил его на функцию правого щелчка, и он работал нормально - возвращал правильные строки и столбцы.
Чтобы быстрее получить помощь, отредактируйте, добавив минимальный воспроизводимый пример или Короткий, автономный, правильный пример. Данные жесткого кода для таблицы.
Я с @AndrewThompson, так как не могу воспроизвести вашу проблему на основе того, что вы опубликовали.
Конечно, есть методы
convertColumnIndexToModel(...)
иconvertRowIndexToModel(...)
, которые здесь важны и, возможно, нужны, но я не вижу, чтобы они работали со значениями-1
(значение, которое предполагает, что ни одна строка или столбец еще не выбраны). ).@HovercraftFullOfEels Я (колебался, чтобы отложить трудные вещи, которые я должен делать, и ..) сделал краткий пример кода, чтобы проверить теорию, которая подтвердилась. Щелчок правой кнопкой мыши по таблице не будет выбирать что-либо.
Мы могли бы проголосовать за повторное открытие, если вы хотите опубликовать это
@AndrewThompson: что скажешь?
@HovercraftFullOfEels "Что скажешь?" Спасибо! Введен ответ. (Извините, я отвлёкся на другие вещи, которые должен был сделать.)