JMenu를 클릭하거나 인접한 JMenu를 클릭 한 다음 마우스를 드래그하면 기본 동작은 펼쳐서 하위 메뉴와 메뉴 항목을 표시하는 것입니다. 이 (메뉴를 펼쳤을 때) 이벤트가 발생할 때와 같은 추가 동작을 연관시킬 수 있습니까?JMenu를 펼칠 때 어떻게해야합니까?
1
A
답변
3
이벤트 리스너 클래스는 JMenus를 위해 특별히 있습니다
javax.swing.event.MenuListener
및
javax.swing.event.MenuDragMouseListener
구성 요소에 연결하기 위해 호출해야하는 메서드는
01입니다.JMenuComponentName.addMenuListener(MenuListener m);
및 JMenuComponentName.addMenuMouseDragListener(MenuDragMouseListener m);
입니다.
3
MenuListener
을 사용하면 메뉴 상태에 대한 정보를 얻을 수 있습니다.
이 간단한 예 ... 새 메뉴 항목을 메뉴를 열 때마다 생성
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
public class TestMenuBar {
public static void main(String[] args) {
new TestMenuBar();
}
public TestMenuBar() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JMenuBar mb = new JMenuBar();
JMenu main = new JMenu("Test");
mb.add(main);
main.addMenuListener(new MenuListener() {
@Override
public void menuSelected(MenuEvent e) {
System.out.println("Selected");
JMenu menu = (JMenu) e.getSource();
menu.add(new JMenuItem("I'm dynamiclly created"));
}
@Override
public void menuDeselected(MenuEvent e) {
System.out.println("deselected");
}
@Override
public void menuCanceled(MenuEvent e) {
System.out.println("Canceled");
}
});
JFrame frame = new JFrame("Testing");
frame.setJMenuBar(mb);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
관련 문제
- 1. java.lang.ClassNotFoundException jar에서 뷰를 펼칠 때
- 2. Navbar 스크롤을 확장하고 페이지를 펼칠 때 페이지 상단에 수정하려면 어떻게해야합니까?
- 3. JMenu를 클릭하여 ColorChooser 항목
- 4. JMenu를 JMenuBar로 이동할 수 없습니다.
- 5. MenuListener 구현, 클릭 한 JMenu를 감지하는 방법?
- 6. 기본 텍스트 정렬을 유지하면서 JMenu를 왼쪽으로 확장합니다.
- 7. Java/Swing/Mac OSX : ScreenMenuBar를 사용하여 JMenu를 JPopupMenu로 변환
- 8. flex4 mx | 항목을 접은 후 펼칠 때 트리 - 항목 순서가 변경됨
- 9. 자바 - JMenuBar의 맨 오른쪽에 JMenu를 추가 할 수 있습니까?
- 10. JFrame에서 JMenu를 사용하여 외부 클래스의 Jpanel을 전환하는 방법
- 11. 아이들이있을 때 어떻게해야합니까?
- 12. 입력하거나 제출할 때 어떻게해야합니까?
- 13. Android Maps Extensions를 사용하여 클러스터를 펼칠 수있을만큼 확대/축소하는 방법은 무엇인가요?
- 14. 교착 상태가 감지되었을 때 어떻게해야합니까?
- 15. 내가 잘못 이해할 때 어떻게해야합니까?
- 16. 내 Javafx가 닫힐 때 어떻게해야합니까?
- 17. 시작할 때 explorer.exe가로드되지 않도록하려면 어떻게해야합니까?
- 18. 사용자가 스크립트를 죽일 때 어떻게해야합니까?
- 19. AngularUI의 모달을 닫았을 때 어떻게해야합니까?
- 20. 참조가 삭제 될 때 어떻게해야합니까?
- 21. sys.stdout.encoding이 None 일 때 어떻게해야합니까?
- 22. 2 개의 삽입 된 YouTube 동영상 미리보기 이미지를 옆에 표시하여 1을 클릭하면 펼칠 수 있습니까?
- 23. 픽셀 별 반투명 모드에서 작동하는 꾸며지지 않은 JFrame에 JMenu를 추가해도 페인트되지 않습니다.
- 24. FluentAssions를 비교할 때 비교할 때 유형을 확인하려면 어떻게해야합니까?
- 25. 프로그램을 시작할 때 MainForm을 숨기도록 설정하려면 어떻게해야합니까?
- 26. NSDocument를 사용할 때 저장 패널을 숨기려면 어떻게해야합니까?
- 27. WinDbg에서 시작할 때 '.cmdtree'창 도킹을 만들려면 어떻게해야합니까?
- 28. ExternalDataExchange 서비스를 구현할 때 WorkflowInstanceId를 얻으려면 어떻게해야합니까?
- 29. SMS를 보낼 때 충돌이 발생합니다 (NullPointerException) 어떻게해야합니까?
- 30. runAction이 끝날 때 특정 함수를 호출하려면 어떻게해야합니까?
테스트에서 내 대답을 삭제했습니다. 맹목적으로 잘못되었습니다. 죄송합니다. –
@ user2460978 서브 메뉴가 보류되고있는 것을 알고 싶으면'PopupListener'를 메뉴'JPopupMenu'에 첨부 할 필요가 있습니다. 기점에 대해서는'JMenu # getPopupMenu'를 참조하십시오. – MadProgrammer