Убедитесь, что значок стрелки не нарисован для пустого JMenu.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Убедитесь, что значок стрелки не нарисован для пустого JMenu.

Сообщение Anonymous »

По умолчанию Swing рисует значок стрелки для каждого JMenu, даже если оно не содержит элементов.
Как я могу изменить это поведение, не расширяя пользовательский интерфейс Swing и не переопределяя его метод рисования с большим количеством копипаста? Обратите внимание, что защищен только javax.swing.plaf.basic.BasicMenuItemUI#paintMenuItem, тогда как javax.swing.plaf.basic.BasicMenuItemUI#paintArrowIcon является частным и не может быть переопределен.
Имейте в виду, что мне нужно, чтобы этот элемент был JMenu, поскольку он может содержать подэлементы. Он динамичен и зависит от данных в базе данных.

Код: Выделить всё

package demos.menu;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.Dimension;

public class MenuDemo {
public static void main(String[] args) {
JPanel mainPanel = new JPanel();
mainPanel.setPreferredSize(new Dimension(250, 150));
JFrame frame = new JFrame("Menu Demo");
frame.setJMenuBar(createMenuBar());
frame.setContentPane(mainPanel);
frame.setLocationRelativeTo(null);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}

private static JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
menuBar.add(createMenu());
return menuBar;
}

private static JMenu createMenu() {
JMenu menu = new JMenu("Menu");
menu.add(createSubMenu());
return menu;
}

private static JMenu createSubMenu() {
JMenu submenu = new JMenu("Submenu");
return submenu;
}
}
Изображение
Ява 8

Подробнее здесь: https://stackoverflow.com/questions/793 ... mpty-jmenu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»