在尊重外观的同时改变JButton形状

时间:2011-10-23 02:31:58

标签: java swing look-and-feel paint

我知道这个问题已被问过一百万次,可以通过覆盖paintComponent()来完成,但我想知道的是如何在尊重当前外观的同时改变形状。如果我想将形状更改为圆形,我还希望按钮看起来像一个按钮,只是具有不同的形状。

我尝试制作一个JButton,最重要的paintComponent,然后将其剪切成圆圈,但我没有在Nimbus LAF上获得边框效果。

有更好的方法吗?或者JButton中是否有方法?

1 个答案:

答案 0 :(得分:1)

对于绘图组件,使用ComponentUI。此UI类具有paint方法,用于绘制组件。 paint方法使用L& F的设置,它们作为属性存储在UIManager中。

创建自己的组件RoundButton,例如从{ AbstractButton您可以创建自己的RoundButtonUI(可能从ButtonUI延伸)。在这里,您可以使用普通按钮(如Button.fontButton.foreground的属性创建自己的绘制方法,以使用与普通按钮相同的L& F值绘制您自己的组件。

RoundButton课程中,您应该实施方法getUIClassID(),该方法将返回字符串"RoundButtonUI"。这会导致您使用RoundButtonUI

一个很好的例子是JButton本身。