我一直在努力实现完全自由的JButton:
在“普通”Swing(没有任何3d派对库)中有没有一种简单的方法可以做到这一点?否则,是否有一个好的免费(开源当然更好)3d派对库才能做到这一点?
作为一个例子,想想一个红圈球:我可以给用户的最好的互动是它不能在外面区域点击,特别是如果球真的很大。
提前谢谢
(我想到了一个用Java2D从头开始编写的组件,并使用Shape contains()方法来查看点击是否合适。但我会遇到两个主要问题:
用于给予Shape的按压外观,以及JButton做的=>>正如有人在下面注意到我,如果我使用两个不同的图纸/图像,这不是最困难的
用于处理事件(ActionListeners)以及JButton做它=>如果我从JComponent继承,那么如果我们没有点击好区域,那么最难处理的是拒绝(返回)处理=>检测鼠标点击点和区域之间最终交集的最佳方法是什么?)
答案 0 :(得分:4)
你有三个选择
1)每个自定义Look and Feels都有工具Rounded JComponents
,这是最安全的方式,如何做到这一点,也许也是正确的,其中一部分带来了优秀的输出Java Swing GUI
和长Bug
历史记录,我建议使用Substance
Look&感觉,但对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
交叉Platform
并跨越Look & Feel
非敏感的