Проблема в том, что я не могу изменить его, когда он нажимается. Кроме того, иногда текст не отображается в рассеянном jmenu , но это может быть только я, делая это неправильно. Я пытался сделать пользовательский метод для jmenu , создав класс, который расширяет jmenu . Я попытался найти исходный исходный код jmenu в надежде, что есть некоторые методы, которые я могу переопределить. Не уверен, что так должно быть сделано. Я прочитал кое -что о uimanager , но не пробовал. Может ли это быть лучшим вариантом? Я публикую свой код внизу: < /p>
Основной класс < /h5>
Код: Выделить всё
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>
custommenubar class < /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>
custommenu class < /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);
}
}
Как выглядит приложение:
hke weft joing jmen "Language":
Как я хочу, чтобы он выглядел как (после jmenu , нажимается, код, и код, и код, и код, и код, и код, и код, и код, и код, и код, и код, и код, и код. Внизу синий с розовым текстом, так же, как jmenubar перед нажатием чего -либо):
Подробнее здесь: https://stackoverflow.com/questions/795 ... -java-swin