【发布时间】:2013-06-21 12:32:13
【问题描述】:
我有一个 JFrame,我在上面放了几个 JButton。一半的 JButton 具有颜色编码——即当 X 事件发生时,我将它们变成蓝色——并且我使用 btn.setBackgroundColor(Color)。当我使用 setBackgroundColor 时,我可以看到那些正常的 JButton 具有阴影/着色/具有 setBackgroundColor 的那些没有的东西。我已经尝试使颜色在有限程度上透明,但我仍然得到一个平坦的颜色块,而不是阴影按钮的着色版本。
这似乎应该是一件很容易解决的事情,但它现在困扰着我。我不想更改默认的 LAF——这很好。我不想放弃颜色变化。我确实希望按钮全部显示样式(我将用于 HTML 的词)。
所以我在这里遗漏了一些东西......它是什么?
编辑添加:
JFrame frame = new JFrame();
frame.add(new JButton("42"));
JButton btn24 = new JButton("24");
btn24.setBackground(Color.red);
frame.add(btn24);
frame.setVisible(true);
在上面的示例中,“42”将在我的 Windows 机器上在底部和顶部显示轻微的颜色变化,从而产生圆形和阴影效果。 “24”按钮将显示一个红色方块。我的问题是:有没有办法让“24”显示圆形/阴影/样式,顶部带有红色?或者我是否需要简单地将所有按钮制作成扁平的正方形以获得统一的外观?
谢谢!
【问题讨论】:
-
发布您已经尝试过执行此操作的代码,并可能通过“着色/着色/具有 setBackgroundColor 的那些没有的东西”来说明您的意思
-
我正在查看@mKorbel 的答案。 camickr 的测试代码显示的内容与我在 Windows 和 Java 7 中使用 setBackgroundColor 看到的内容几乎相同。
-
对不起...我没有代表支持。我确实四处闲逛,目前正在研究 GradientPaint。实现起来很麻烦,但看起来我想要用渐变绘制覆盖paintComponent。
-
亲爱的 Hovercraft 和 Java Devil,是的——问题是当你设置背景颜色时——无论是使用 .setBackground(Color) 还是在其上方绘制矩形/形状——都没有t(默认)使用渐变。因此,在上面的示例中,42 按钮具有渐变(阴影/样式),因为在默认 LAF 中,它使用渐变绘制按钮。 24 按钮(至少在我的系统上是默认的)以普通颜料显示颜色——而不是渐变。感谢您为我指明正确的方向。如果我有代表,我会为@mKorbel(和气垫船)投票。
标签: java swing jbutton look-and-feel