我知道这个问题已被问过一百万次,可以通过覆盖paintComponent()
来完成,但我想知道的是如何在尊重当前外观的同时改变形状。如果我想将形状更改为圆形,我还希望按钮看起来像一个按钮,只是具有不同的形状。
我尝试制作一个JButton,最重要的paintComponent
,然后将其剪切成圆圈,但我没有在Nimbus LAF
上获得边框效果。
有更好的方法吗?或者JButton
中是否有方法?
答案 0 :(得分:1)
对于绘图组件,使用ComponentUI。此UI类具有paint方法,用于绘制组件。 paint方法使用L& F的设置,它们作为属性存储在UIManager中。
创建自己的组件RoundButton
,例如从{ AbstractButton
您可以创建自己的RoundButtonUI
(可能从ButtonUI
延伸)。在这里,您可以使用普通按钮(如Button.font
或Button.foreground
的属性创建自己的绘制方法,以使用与普通按钮相同的L& F值绘制您自己的组件。
在RoundButton
课程中,您应该实施方法getUIClassID()
,该方法将返回字符串"RoundButtonUI"
。这会导致您使用RoundButtonUI
。
一个很好的例子是JButton
本身。