1
내 프로그램에 JMenuItem
이있는 JMenuBar
이 있습니다. 그들은 ActionListener
을 가지고 있으며 setAccelerator
으로 바로 가기를 설정했습니다. 이제 창에 초점이 맞춰지면 표시되는 이미지에 더 많은 공간을 확보하기 위해 메뉴 모음을 숨 깁니다. 그러나 메뉴 모음을 처음 숨긴 후에 바로 가기 키가 작동을 멈 춥니 다.보이지 않는 JMenuBar, Accelerator가 작동하지 않습니다.
어떻게 해결할 수 있습니까? 참고로
import javax.swing.*;
import java.awt.event.*;
class Example extends JFrame{
public static void main(String[] args) {
new Example(); //main is static
}
static JMenuBar menubar; //be accessable for the ActionListener
Example() {
//JPanel
this.setSize(50,50);
this.setVisible(true);
//Menubar, static
menubar = new JMenuBar();
this.setJMenuBar(menubar);
//Menu
JMenu filemenu = new JMenu("File");
menubar.add(filemenu);
//Item
JMenuItem menuitem = new JMenuItem("Do Something...");
filemenu.add(menuitem);
menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, KeyEvent.SHIFT_DOWN_MASK)); // Shift + D
menuitem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Action!");
}
});
JButton button = new JButton("Show/Hide menubar");
this.add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Toggle Bar!");
menubar.setVisible(!menubar.isVisible()); //Toggle
}
});
}
}
: 나는 자바 1.7.0_60-개를 사용하고 있습니다 (자바 7) Mac에서
는 그 이상한 행동을 설명하기 위해 약간의 예제 코드를 만들었습니다. 그러나이 오류는 Mac 기본 메뉴 표시 줄 또는 JFrame 내부의 일반 Java 메뉴 표시 줄을 사용하는 것과 관계없이 발생합니다.