実装するはずのケースに応じて、ある時点でメニューを無効にする必要があります。それは単にJMenu#setEnabled(false)は、メニュー自体を無効にするのではなく、すべてのアクションを無効にします。
JMenu menu = new JMenu();
menu.setEnabled(false);
を設定することが理にかなっていると確かにそれは、このコードサンプルで動作します:
public class MenuTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(FrameTest::new);
}
}
class FrameTest extends JFrame {
public FrameTest() {
super();
JPanel panel = new JPanel(new GridBagLayout());
JMenuBar menuBar = new JMenuBar();
JMenu menu1 = new JMenu("test menu1");
JMenu menu2 = new JMenu("test menu2");
menuBar.add(menu1);
menuBar.add(menu2);
menu1.setEnabled(false);
setJMenuBar(menuBar);
setPreferredSize(new Dimension(400, 400));
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
しかし、コードベースに、私はこのアプローチに取り組んでいますが動作しない、それが有効なメニューを残し、カプセル化されたすべてのアクションを無効にします。それは私が探しているものではありません。いくつかの理由で、主にそのかなり大きいとここに収まるだろう、私はそれを投稿していないが、アイデアは同じです。 JMenu
で埋められたJMenuBar
は、AbstractActions
で埋められています。 JMenu
の同じメソッドsetEnabled(false)
を使用して結果が異なる理由はありますか?
「ある理由で、主にかなり大きく、ここに収まらないので、私はここに掲載していません....」。常に[mcve] – Ansharja