Stellen Sie sicher, dass kein Pfeilsymbol für leeres JMenu angezeigt wirdJava

Java-Forum
Guest
 Stellen Sie sicher, dass kein Pfeilsymbol für leeres JMenu angezeigt wird

Post by Guest »

Standardmäßig zeichnet Swing ein Pfeilsymbol für jedes JMenu, auch wenn es keine Elemente enthält.
Wie kann ich dieses Verhalten ändern, ohne die Benutzeroberfläche von Swing zu erweitern und zu überschreiben? Malmethode mit viel Copy-Paste? Beachten Sie, dass nur javax.swing.plaf.basic.BasicMenuItemUI#paintMenuItem geschützt ist, wohingegen javax.swing.plaf.basic.BasicMenuItemUI#paintArrowIcon privat ist und nicht überschrieben werden kann.
Denken Sie daran, dass das Element ein JMenu sein muss, da es möglicherweise Unterelemente enthält. Es ist dynamisch und hängt von Daten in einer Datenbank ab.

Code: Select all

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;
}
}
Image
Java 8

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post