Найдите строку JTable, в которой было вызвано всплывающее меню

У меня есть JTable и всплывающее меню, специфичное для каждой строки. Я хочу вычислить строку, в которой пользователь щелкнул правой кнопкой мыши (Windows L&F), чтобы вызвать всплывающее меню.

Я создаю MouseListener для таблицы, поэтому он получает MouseEvent при щелчке и показывает всплывающее окно меню в нужном месте. Но когда пользователь выбирает один элемент во всплывающем меню, я не могу понять, как определить, в какой строке пользователь щелкнул правой кнопкой мыши в первую очередь. Событие для вызова всплывающего меню не имеет символа x, Координаты y, в которых щелчок правой кнопкой мыши больше не выполнялся.

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

Я работал над этим, создав подкласс JPopupMenu и установив значения x и y, которые я хочу, чтобы он имел в MouseListener. Но мне кажется, что это общая проблема для всех, кто хочет разместить всплывающее меню в JTable, и мне интересно, что я пропустил.

Есть ли более простой способ сделать это, особенно тот, который не включает подклассы JPopupMenu?

6
задан user492820 8 November 2010 в 02:28
поделиться