2013-06-04 7 views
0

Я хочу включить некоторый статический текст во всплывающее меню. Я бы хотел, чтобы он выглядел так же, как и любой другой пункт меню, просто не выбираемый. Способы, которые я пробовал:Каков наилучший способ добавить статический текст в меню 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); 
    

мне не хватает какой-то другой способ, чтобы добавить статический текст в меню, в котором используется тот же шрифт и выравнивание как обычный пункт меню, но неактивна, не принимает фокус клавиатуры и не подсвечивается когда мышь нависает над ним?

+0

С точки зрения пользователей, это будет запутанным/раздражает, если текст выглядит так же, как и другие интерактивными вариантов. Если вы просто пытаетесь классифицировать параметры меню, возможно, подменю будет лучшим подходом? – DannyMo

+0

Хммм, заметив что-то не так с JLabel, я видел это несколько раз, хорошо выглядит, ставил JSeparator под JLabel, а второй на дно JPopupMenu, использовал JLabel.setFont (myJMenuItem.getFont или получил это значение от UIManager для JMenuItem) – mKorbel

+0

некоторые LookAndFeels реализовал вертикальную матрицу для JPopuMenu, JMenu с JMenuItems – mKorbel

ответ

0

Следующие работы отлично подходят для меня. Просто добавьте JLabel в JPanel и добавьте JPanel к вашему JPopupMenu

JPanel panelLabel = new JPanel();  
JLabel lblSomeText = new JLabel("Some text"); 
lblSomeText.setFont(menuItem.getFont()); 
lblSomeText.setForeground(menuItem.getForeground()); 
panelLabel.add(lblSomeText); 
popupMenu.add(panelLabel); 
+1

Проблема заключается в том, что метка не выровнена одинаково. Метка отображается на одном уровне с левой стороной меню, а элементы меню оставляют небольшое пространство слева. Возможно, это зависит от внешнего вида и ощущения; Я развиваюсь в Linux и использую внешний вид системы по умолчанию (это GTK). –

 Смежные вопросы

  • Нет связанных вопросов^_^