Как поймать щелчок по элементу JMenu? - PullRequest
4 голосов
/ 27 июля 2011

Я разрабатываю приложение Java / Swing с помощью меню, используя JMenuBar, JMenu и JMenuItem.

Системный вид и падение применяются к пользовательскому интерфейсу.

UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );

У меня есть несколькоэлементы верхнего уровня для моего меню:

  • "Файл" JMenu отлично работает и позволяет пользователю выбирать подменю, например JMenuItems "New", "Open" ...

  • Затем я хочу добавить второй элемент верхнего уровня «О программе» (того же уровня, что и «Файл»), который отображает всплывающее окно при нажатии на него.

вопрос довольно прост: как сделать этот элемент "About" в JMenu активным?

Я пробую несколько способов:

  1. Установить "О программе"элемент как JMenuItem .Однако этот элемент имеет не тот же пользовательский интерфейс, что другие элементы JMenu, такие как «Файл»

  2. Установите элемент «О себе» как JMenu и добавьте MouseListener и KeyListener на нем.Этот элемент будет иметь тот же пользовательский интерфейс, что и другие, но мне нужно дважды щелкнуть по кнопке «Ок» всплывающего окна «О программе», чтобы перехватить это событие.

Есть ли другие решения?

1 Ответ

4 голосов
/ 27 июля 2011

Моим первым предложением было бы просто добавить один JMenuItem в меню «About» JMenu. Поскольку это будет соответствовать тому, как работают другие меню, и будет выглядеть так же. Также не удивительно, когда пользователь нажимает «О программе», ожидая меню, но вместо этого видит всплывающее окно. Обычно приложения имеют меню «Справка» в конце строки меню с пунктом меню «О программе», который отображает всплывающее окно. При нажатии на заголовок меню не часто открывается всплывающее окно.

Если вам действительно нужно сделать то, что вы предлагаете, то либо:

  • Укажите внешний вид (например, Nimbus) и измените JMenuItem, чтобы он выглядел как элемент меню.

или

  • Найдите способ для вашего второго варианта работы. Это звучит выполнимо, но может потребовать еще немного доработки и будет сложнее заставить интерфейс работать правильно с System Look and Feels.
...