Я пытаюсь отключить JMenu, когда все его подэлементы отключены. У меня есть меню «Добавить новое» и в этом меню два пункта меню: «Файл» и «Каталог».Отключить JMenu, когда все его элементы отключены
Элементы меню привязаны к конкретным действиям, состояние которых я меняю, поэтому пункты меню меняют свое состояние.
Что я пытаюсь добиться, так это то, что меню «Добавить новое» отключается, когда оба действия «Файл» и «Каталог», таким образом, также неактивны.
Я попытался переопределить метод isSelected() JMenu, и он частично работает - он не отображает элементы. Тем не менее, меню по-прежнему окрашено как активное (черный шрифт вместо серого).
Любые мысли о том, как этого достичь?
Вот пример кода, который повторяет ситуацию:
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
JPopupMenu popup = new JPopupMenu();
final Action actionBeep = new DefaultEditorKit.BeepAction();
final Action actionPaste = new DefaultEditorKit.PasteAction();
JMenu menu = new JMenu("Add");
menu.add(new JMenuItem(actionBeep));
menu.add(new JMenuItem(actionPaste));
popup.add(menu);
JTable table = new JTable(3, 3);
table.setComponentPopupMenu(popup);
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if(e.getClickCount() == 2) {
actionBeep.setEnabled(!actionBeep.isEnabled());
actionPaste.setEnabled(!actionPaste.isEnabled());
}
}
});
frame.add(table);
frame.pack();
frame.setVisible(true);
}
});
}
JMenu имеет функцию setEnabled(). Почему бы просто не использовать это? –
С моим дизайном это означает немного дополнительного кода, но это, безусловно, рабочее решение. – Shocked