Я хочу включить некоторый статический текст во всплывающее меню. Я бы хотел, чтобы он выглядел так же, как и любой другой пункт меню, просто не выбираемый. Способы, которые я пробовал:Каков наилучший способ добавить статический текст в меню Java Swing?
Добавить отключенное JMenuItem в меню. Хотя это приводит к правильному шрифту и выравниванию, это заставляет текст визуализироваться светло-серого цвета и быть почти нечитаемым.
Добавить JLabel в меню. Это выглядит некрасиво; метка использует другой шрифт, чем обычные элементы меню, и не выравнивается одинаково (элементы меню оставляют место для значка слева, метка этого не делает).
JPopupMenu popupMenu = new JPopupMenu(); JLabel label = new Label("Static text); popupMenu.add(label); JMenuItem menuItem = new JMenuItem("Disabled menu item); menuItem.setEnabled(false); popupMenu.add(menuItem); menuItem = new JMenuItem("Regular item); popupMenu.add(menuItem);
мне не хватает какой-то другой способ, чтобы добавить статический текст в меню, в котором используется тот же шрифт и выравнивание как обычный пункт меню, но неактивна, не принимает фокус клавиатуры и не подсвечивается когда мышь нависает над ним?
С точки зрения пользователей, это будет запутанным/раздражает, если текст выглядит так же, как и другие интерактивными вариантов. Если вы просто пытаетесь классифицировать параметры меню, возможно, подменю будет лучшим подходом? – DannyMo
Хммм, заметив что-то не так с JLabel, я видел это несколько раз, хорошо выглядит, ставил JSeparator под JLabel, а второй на дно JPopupMenu, использовал JLabel.setFont (myJMenuItem.getFont или получил это значение от UIManager для JMenuItem) – mKorbel
некоторые LookAndFeels реализовал вертикальную матрицу для JPopuMenu, JMenu с JMenuItems – mKorbel