我一直在试图找到有效编码的解决方案,以免错误或其他任何内容。到目前为止,它似乎与

问题描述 投票:0回答:1
JMenu

的类来制作一种自定义方法。我尝试搜索原始

JMenu
源代码,希望有一些我可以覆盖的方法。不知道这是否应该是这样做的。我读了一些有关
JMenu
的东西,但没有尝试过。可以是一个更好的选择吗?
如果您对

JMenu

的了解,请随时给我一些有关如何有效进行工作的建议。我正在下面发布我的代码:

mainclass
JMenu
custommenubarclass
UIManager
custompommenuclass

Look and Feel

Screenshots

该应用如何:
单击“语言”之后,看起来如何:
我如何希望它看起来像(单击
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); } }

):

link

	

LLE的开头是修复:

link中,我们创建了一个我们调用

init

方法的

main
对象,然后将其作为参数传递给
Invokelater()
swingunities
类的静态方法。这样,我们确保在事件线程上创建GUI,从而避免并发问题(“有时文本直到...”)。

Init

,我们将一个linkactionListener

添加到
java swing jmenu
1个回答
0
投票
中,将触发更改,在创建的类中,我们修改了所需的颜色,使用

SetForegroundrground

我们修改了文本的颜色,并使用

SetBackground背景颜色。 JMenu

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.