Ich habe versucht, das Erscheinungsbild von Jmenu und die gesamte Symbolleiste in Java Swing zu ändern
Posted: 12 Mar 2025, 13:03
Ich habe versucht, eine Lösung für das Codierungs -Erscheinungsbild zu finden. Bisher schien es mit JMenubar zu funktionieren, aber ich habe bei JMenu . Manchmal wird auch der Text nicht in einem unglissen Jmenu angezeigt, aber ich kann es nur auf falsche Weise tun. Das, was ich versucht habe, war, eine benutzerdefinierte Methode für JMenu zu erstellen, indem eine Klasse erstellt wird, die JMenu erweitert. Ich habe versucht, nach dem ursprünglichen Quellcode von JMenu zu suchen, in der Hoffnung, dass es einige Methoden gibt, die ich überschreiben kann. Ich bin mir jedoch nicht sicher, ob es so gemacht werden sollte. Ich habe ein paar Sachen über uimanager gelesen, es aber nicht versucht. Könnte es eine bessere Option sein? Ich poste meinen Code unter: < /p>
Hauptklasse < /h5>
SCREENSHOTS
How the app looks like:

How it looks like after clicking the JMenu "Sprache":
Wie ich möchte, dass es aussieht (After Jmensu -Code> wurde geklickt. Darunter ist blau mit einem rosa Text, genau wie der JMenuuBar bevor Sie auf irgendetwas klicken):
Hauptklasse < /h5>
Code: Select all
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Main {
public static void main(String[] args) {
// JFRAME
JFrame frame = new JFrame();
frame.setTitle("Test App");
frame.setResizable(true);
frame.setSize(800,600);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// JMENUBAR
CustomMenuBar menuBar = new CustomMenuBar();
menuBar.setColor(Color.BLUE);
// JMENU
JMenu menu = new JMenu("Language");
menu.setForeground(Color.pink);
// menu.addMenuListener();
// JMENUITEM
JMenuItem eng = new JMenuItem("English");
menu.add(eng);
menuBar.add(menu);
frame.setJMenuBar(menuBar);
frame.setVisible(true);
}
}
< /code>
benutzerdefinierte MENUBAR -Klasse < /h5>
import javax.swing.*;
import java.awt.*;
public class CustomMenuBar extends JMenuBar {
Color menuBarBgc = Color.RED;
public void setColor(Color color) {
menuBarBgc = color;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(menuBarBgc);
g2d.fillRect(0,0,getWidth() -1, getHeight() -1);
}
}
< /code>
benutzerdefinierte MENU -Klasse < /h5>
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
public class CustomMenu extends JMenu {
Color menuBgc = Color.RED;
public void setColor(Color color) {
menuBgc = color;
// setOpaque(true);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(menuBgc);
g2d.fillRect(0,0,getWidth() -1, getHeight() -1);
}
}
How the app looks like:

How it looks like after clicking the JMenu "Sprache":
Wie ich möchte, dass es aussieht (After Jmensu -Code> wurde geklickt. Darunter ist blau mit einem rosa Text, genau wie der JMenuuBar bevor Sie auf irgendetwas klicken):