我一直在尝试实现一个完全免费的带边框的JButton:
在“普通” Swing中(没有任何3D方库)有没有一种简单的方法?否则,是否有一个不错的免费(当然开源更好)3d派对库才能做到这一点?
例如,考虑一个红色圆圈的球:我可以给用户的最佳交互是它不能在外部区域单击,尤其是在球确实很大的情况下。
先感谢您
(我想到了一个用Java2D从头开始编写的组件,并使用Shape contains()方法来查看点击是否良好。但是我会遇到两个主要问题:
最佳答案
你有三个选择
1)每个自定义Look and Feels都实现了Rounded JComponents
,这是最轻松自如的方式,也许也是正确的做法,其中的一部分将出色的输出带到Java Swing GUI
中,并且具有很长的Bug
历史,我建议使用Substance
Look&Feel,但是对EDT非常敏感
2)您可以覆盖整个(自定义Look and Feels
已经做到了)ButtonUI,但是您的UI_Delegate
将是Look and Feel
和Native_OS
敏感的,这意味着我发布的链接的示例可以在Windows
平台上使用Metal Look and Feel
进行工作,如果您想创建交叉Platform
和交叉Look & Feel
非敏感的,那么您必须将所有可能的Platforms
和Look and Feels
改写
3)用JComponent
创建Rounded Borders
,在内部用GradientPaint
填充区域,然后添加MouseListener
,MouseMotionListener
,KeyListener
或更好地编写自己的KeyBindings
并创建自己的Model
以避免linstening Listeners
之间的一致性,然后将您的Custom JButton
与跨ojit的代码交叉不敏感
一切....取决于你,很幸运