JMenu
的类来制作一种自定义方法。我尝试搜索原始
JMenu
源代码,希望有一些我可以覆盖的方法。不知道这是否应该是这样做的。我读了一些有关JMenu
的东西,但没有尝试过。可以是一个更好的选择吗?如果您对JMenu
的了解,请随时给我一些有关如何有效进行工作的建议。我正在下面发布我的代码:
mainclassJMenu
custommenubarclassUIManager
custompommenuclass
Look and Feel
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);
}
}
之后,背景更改为蓝色,文本颜色保持粉红色,而下面则是蓝色的,带有粉红色的文本,就像在单击任何东西之前 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);
}
}
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);
}
}
LLE的开头是修复:
中,我们创建了一个我们调用
方法的
main对象,然后将其作为参数传递给
Invokelater()swingunities
类的静态方法。这样,我们确保在事件线程上创建GUI,从而避免并发问题(“有时文本直到...”)。在Init
,我们将一个actionListener
SetForegroundrground
我们修改了文本的颜色,并使用SetBackground背景颜色。
JMenu