Пункты меню очень похожи на кнопки. Фактически класс JMenuItem расширяет класс AbstractButton. Как и кнопки, меню могут иметь текстовую метку, пиктограмму или и то и другое в тот же момент. Пиктограмму можно указать в конструкторе JMenuItem(String, Icon) или JMenuItem(Icon), либо задать с помощью метода setIcon(), унаследованного классом JMenuItem от класса AbstractButton. Вот пример:
1 |
JMenuItem cutItem = new JMenuItem("Cut", new ImageIcon("cut.gif")); |
По умолчанию название пунктов меню располагаются справа от пиктограмм. Если вам хочется, чтобы справа находились пиктограммы, используйте метод setHorizontalTextPosition(), унаследованный классом JMenuItem от AbstractButton. Например, приведенный ниже оператор перемещает текст пункта меню влево от пиктограммы.
1 |
cutItem.setHorizontalTextPosition(SwingConstants.LEFT); |
Пиктограмму можно связать с объектом Action:
1 |
cutAction.putValue(Action.SMALL_ICON, new ImageIcon("Cut.gif"); |
Если пункт меню создается независимо от Action, то значения поля Action.NAME становится название пункта меню, а значением поля Action.SMALL_ICON — его пиктограмма. Кроме того, пиктограмму можно задать в конструкторе класса AbstractAction:
1 2 3 4 5 |
cutAction = new AbstractAction("Cut", new ImageIcon("cut.gif") { public void actionPerformed(ActionEvent event) { // Фрагмент, реализующий обработку, } }; |