java menuitem 图标_java-在JMenuItem中设置图标可使菜单文本与图...

添加菜单项时(无论是下面的示例中的硬编码还是使用Action),图标的颜色都会导致菜单项文本的颜色发生变化.这很奇怪,如果图标为白色或非常浅,则可能导致菜单项不可读.如何关闭此功能?在菜单项上调用setForeground(Color.black)不起作用.

SSCCE:

import javax.swing.*;

import java.awt.*;

public class Test extends JFrame

{

public Test()

{

JMenuBar bar = new JMenuBar();

JMenu menu = new JMenu("menu");

menu.add(new JMenuItem("crap name", new Icon(){

@Override

public void paintIcon(Component c, Graphics g, int x, int y) {

g.setColor(Color.blue);

((Graphics2D)g).fill3DRect(0, 0, 8, 8, true);

}

@Override

public int getIconWidth() {

return 8;

}

@Override

public int getIconHeight() {

return 8;

}

}));

bar.add(menu);

setJMenuBar(bar);

}

public static void main(String[] args)

{

Test app = new Test();

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

app.setVisible(true);

}

}

编辑:这发生在Mac Aqua L& F和我的应用程序的Windows中. SSCCE也会在Mac上导致这种情况,但奇怪的是,在Windows中. (Windows中还有其他UI差异:SSCCE在图标和文本之间有一个垂直分隔符;我的应用程序没有.)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值