Контекст: В моем Jtable, я делаю выбор из нескольких ячеек, а затем выполняю щелчок правой кнопкой мыши. Из выбранного параметра в моем подменю мне нужно получить выбранные ссылки на ячейки. Я могу получить выбранные строки и столбцы из моего всплывающего меню, , но не из вложенного или подменю.Получить выделенные строки ячеек из вложенного контекстного меню JMenuItems (Java Swing)
Вот мои фрагменты кода:
private JMenuItem menuItem1;
private JMenuItem makeMenuItem(String label) {
JMenuItem item = new JMenuItem(label);
item.addActionListener(this);
return item;
}
JPopupMenu popup = new JPopupMenu();
popup.add(makeMenuItem("Menu1"));
popup.add(makeMenuItem("Menu2"));
JMenu menuItem = new JMenu("Sub-menu");
menuItem1 = new JMenuItem("Sub-1");
menuItem.add(menuItem1);
menuItem1.addActionListener(this);
....
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == menuItem1){
//I am unable to get the selected rows and columns
JMenuItem source = (JMenuItem)(e.getSource());
JOptionPane.showMessageDialog(null,source.getClass().getName());
}else{
Component com = (Component)e.getSource();
JPopupMenu popup = (JPopupMenu)com.getParent();
JTable table = (JTable)popup.getInvoker();
//I am able to get selected rows and columns over here.
int row[] = table.getSelectedRows();
int col[] = table.getSelectedColumns();
}
}
Для основного меню (menu1 & menu2), я в состоянии получить выбранные строки и столбцы через «(JTable) popup.getInvoker();» который, к сожалению, не работает с JMenuItems. Оператор if else, а также изображение предназначены только для иллюстрации. За ваш совет, спасибо.
Не можете ли вы просто сохранить выбор перед всплывающим меню и использовать его из actionPerformed()? – StanislavL