10
我想知道您是否可以測試以查看JMenu(不是JMenuItem)是否已被點擊。我試圖給它添加一個ActionListener,但它似乎沒有認出它。我只需要它在JMenu按鈕被按下時執行一個動作,以便我可以改變它打開的菜單的JMenuItems。爲了得到這個結果,所有的工作都很受歡迎!JMenu ActionListener
感謝
我想知道您是否可以測試以查看JMenu(不是JMenuItem)是否已被點擊。我試圖給它添加一個ActionListener,但它似乎沒有認出它。我只需要它在JMenu按鈕被按下時執行一個動作,以便我可以改變它打開的菜單的JMenuItems。爲了得到這個結果,所有的工作都很受歡迎!JMenu ActionListener
感謝
JMenu
使用MenuListener
代碼
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class ActionExample {
public ActionExample() {
JMenu menu = new JMenu("Menu");
menu.setMnemonic(KeyEvent.VK_M);
menu.addMenuListener(new SampleMenuListener());
JMenu menu1 = new JMenu("Tool");
menu1.setMnemonic(KeyEvent.VK_T);
menu1.addMenuListener(new SampleMenuListener());
JFrame f = new JFrame("ActionExample");
JMenuBar mb = new JMenuBar();
mb.add(menu);
mb.add(menu1);
f.setJMenuBar(mb);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ActionExample actionExample = new ActionExample();
}
});
}
}
class SampleMenuListener implements MenuListener {
@Override
public void menuSelected(MenuEvent e) {
System.out.println("menuSelected");
}
@Override
public void menuDeselected(MenuEvent e) {
System.out.println("menuDeselected");
}
@Override
public void menuCanceled(MenuEvent e) {
System.out.println("menuCanceled");
}
}
JMenuItem
只使用ButtonModel對於JMenu的實例,您不能添加ActionListener,只能使用JMenuItem來完成。
你試過['addMenuListener'](http://docs.oracle.com/javase/7/docs/api/javax/swing/JMenu.html#addMenuListener(javax.swing.event.MenuListener))嗎? – assylias 2012-03-25 17:13:32
不,我現在正在使用addActionListener,但爲了補充說我遇到了一些問題,不應該actionListener工作? – clankfan1 2012-03-25 17:20:10
爲什麼要改變JMenu點擊的菜單項?爲什麼不在點擊之前改變它?你在這裏的「用例」是什麼? – 2012-03-25 17:28:04