1

ポップアップ メニューをコーディングすると、マウス イベントをチェックして、show() を呼び出す前にメニューを準備できます。

メニューバーにあるドロップダウンメニューにも同様の機能が必要です。たとえば、次のメニュー バー レイアウトがあります。

Menu 1
   MenuItem 1.1
      MenuItem 1.1.1
      MenuItem 1.1.2
      ..
      MenuItem 1.1.n
Menu 2

基本的に、ドロップダウンメニューが呼び出されて表示される前に、リスト MenuItem 1.1.1、MenuItem 1.1.2、...、MenuItem 1.1.n を動的に生成したいと考えています。

Java/Swing でこれを行うにはどうすればよいですか? メニューバーの L&F 固有のキーボード/マウス呼び出しの両方をカバーするコールバックはありますか?

よろしくお願いします

4

1 に答える 1

2

javax.swing.JMenuBarの代わりにを使用する必要がありますjava.​awt.MenuBar
これらの MenuBarsは、メソッドjavax.​swing.JMenuを持つ を追加できます。addMenuListener(MenuListener l)

この MenuListener では、メニューを動的に追加および削除できます。

@Override
public void menuSelected(MenuEvent e) {
    // Put your logic here
    JMenu dynamicMenu = (JMenu) e.getSource();
    dynamicMenu.add(new JMenuItem("MenuItem 1.1.1"));
}

@Override
public void menuDeselected(MenuEvent e) {
    // Remove all MenuItems
    JMenu dynamicMenu = (JMenu) e.getSource();
    dynamicMenu.removeAll();
}

@Override
public void menuCanceled(MenuEvent e) {
    // Remove all MenuItems
    JMenu dynamicMenu = (JMenu) e.getSource();
    dynamicMenu.removeAll();
}

JMenuBar を JFrame に追加するには、setJMenuBar(JMenuBar menubar)メソッドを使用します。

于 2012-11-23T11:37:27.170 に答える