gpt4 book ai didi

java - 如何更改 java JMenuItem (ctrl+s) 内快捷方式文本的颜色/字体

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:48 25 4
gpt4 key购买 nike

正如标题所说,试图找到一种方法来设置此快捷方式文本的颜色:

enter image description here

任何想法将不胜感激。

如果有办法也可以更改悬停时的颜色,则可获得奖励积分。(与我期望的类似:)

UIManager.put("MenuItem.selectionBackground", Color.GREEN);

编辑:...

    //SET DEFAULT COLOR STYLE FOR MENU
//UIManager.put("TabbedPane.selected", Color.GREEN);
UIManager.put("MenuItem.selectionBackground", bgMenuHover);
UIManager.put("MenuItem.selectionForeground", fgMenuHover);
UIManager.put("MenuItem.background", bgMenu);
UIManager.put("MenuItem.foreground", fgMenu);
UIManager.put("Menu.selectionBackground", bgMenuHover);
UIManager.put("Menu.selectionForeground", fgMenuHover);
UIManager.put("Menu.background", bgMenu);
UIManager.put("Menu.foreground", fgMenu);
UIManager.put("MenuBar.selectionBackground", bgMenuHover);
UIManager.put("MenuBar.selectionForeground", fgMenuHover);
UIManager.put("MenuBar.background", bgMenu);
UIManager.put("MenuBar.foreground", fgMenu);
UIManager.put("PopupMenu.border", BorderFactory.createLineBorder(bgMenu, 1));
//UIManager.put("PopupMenu.forground", Color.CYAN);


//END DEFAULT COLOR STYLE FOR MENU
...

//create menu bar
JMenuBar menuBar = new JMenuBar();
menuBar.setOpaque(true);

menuBar.setBorder(null);
menuBar.setFont(font2);

// build first menu
JMenu menu = new JMenu("File");
menu.setMnemonic(KeyEvent.VK_A);
menu.getAccessibleContext().setAccessibleDescription("NOTHING HERE YET");
menu.setOpaque(true);

menu.setBorder(null);
menu.setFont(font2);
menuBar.add(menu);


//a group of JMenuItems
JMenuItem menuItem = new JMenuItem("Save", KeyEvent.VK_S);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription("THIS DOES NOTHIGN YET");
menuItem.setOpaque(true);

menuItem.setFont(font2);
menu.add(menuItem);

...

最佳答案

要更改 nimbus 中 jmenuitem 的快捷方式文本颜色,您可以覆盖

MenuItem:MenuItemAccelerator[MouseOver].textForeground 属性

更改鼠标悬停背景颜色覆盖

MenuItem[MouseOver].backgroundPainter

示例

enter image description here

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
UIManager.getLookAndFeelDefaults().put("MenuItem:MenuItemAccelerator[MouseOver].textForeground",Color.yellow);
UIManager.getLookAndFeelDefaults().put("MenuItem[MouseOver].backgroundPainter",
new mypainter(Color.RED));

break;
}
}

和类mypainter

class mypainter implements Painter<JComponent> {

private Color color=null;

public mypainter(Color c) {
color = c;
}

@Override
public void paint(Graphics2D g, JComponent object, int width, int height) {
g.setColor(color);
g.fillRect(0, 0, width, height);
}

}

......................更新......................................

要更改金属外观中的菜单项快捷方式文本,您可以覆盖属性MenuItem.acceleratorForeground

尝试运行以下类(class)

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;

public class myframe extends JFrame{

public myframe() {
super("Java Menubar Example");
JMenuBar menuBar = new JMenuBar();

JMenu fileMenu = new JMenu("File");
JMenuItem openMenuItem = new JMenuItem("save");
openMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
fileMenu.add(openMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(400, 300));
pack();
setLocationRelativeTo(null);
setVisible(true);
}

public static void main(String[] args) {
UIManager.getLookAndFeelDefaults().put("MenuItem.acceleratorForeground", Color.red);
myframe myframe = new myframe();

}
}

关于java - 如何更改 java JMenuItem (ctrl+s) 内快捷方式文本的颜色/字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com