我試圖讓一個JMenuBar隱藏並使用ctrl + h按鍵顯示,我已經成功完成了隱藏JMenu的操作但我不能使用Ctrl + H鍵顯示JMenu的,在這裏,他是代碼:JMenuBar - 使用快捷鍵隱藏JMenu Ctrl + h,擊鍵在setVisible後不起作用(false)
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import view.Menu;
import view.Window;
public class MenuController implements ActionListener {
protected Window w;
protected Menu m;
public MenuController(Window w) {
this.w = w;
this.m = w.getMenu();
m.getQuit().addActionListener(this);
m.getHide().addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
String item = e.getActionCommand();
if (item.equals("Quitter"))
System.exit(0);
if(item.equals("Masquer le menu")) {
if(m.isVisible() == true)
m.setVisible(false);
else
m.setVisible(true);
}
}
}
getHide(),給予對應的JMenuItem誰都有按鍵,如果你看到他的問題... 問候
編輯:所以在這裏,view.Menu類:
public class Menu extend小號的JMenuBar {
private static final long serialVersionUID = 1L;
private JMenuItem quit = new JMenuItem();
private JMenuItem hide = new JMenuItem();
public Menu() {
JMenu menu1 = new JMenu("Fichier");
hide.setText("Masquer le menu");
hide.setEnabled(true);
hide.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, KeyEvent.CTRL_MASK));
menu1.add(hide);
quit.setText("Quitter");
quit.setEnabled(true);
quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK));
menu1.add(quit);
add(menu1);
}
public JMenuItem getQuit() {
return quit;
}
public JMenuItem getHide() {
return hide;
}
}
「view.Menu」的超類是什麼?當您激活「隱藏」菜單項目時會發生什麼? – VGR
所以當我激活隱藏菜單項時,菜單當前不顯示,我的問題是當我想再次顯示菜單時,按鍵不再起作用。 – zed13
加速器不工作,如果menuBar沒有顯示,請參閱[最近QA的詳細信息](http://stackoverflow.com/a/18097498/203657) – kleopatra