矩形Java Swing单选按钮?

矩形Java Swing单选按钮?,java,swing,jbutton,jradiobutton,jtogglebutton,Java,Swing,Jbutton,Jradiobutton,Jtogglebutton,我想在JavaSwing应用程序中创建一组按钮,就像在绘制程序中的典型工具调色板中一样。也就是说,一组小正方形按钮,每个按钮都包含一个图标,其中只有一个按钮被按下,当您按下另一个按钮时,第一个按钮被取消选择。我想到了很多解决方案,但没有一个看起来很简单/优雅 这听起来像是JRadioButton的工作,但是如果你在上面添加一个图标,你仍然会得到一个小圆圈,这是相当低的空间效率。我想一个选择是为JRadioButton找到一个替代的外观或绘制代码 另一种选择可能是将JButton添加到Button

我想在JavaSwing应用程序中创建一组按钮,就像在绘制程序中的典型工具调色板中一样。也就是说,一组小正方形按钮,每个按钮都包含一个图标,其中只有一个按钮被按下,当您按下另一个按钮时,第一个按钮被取消选择。我想到了很多解决方案,但没有一个看起来很简单/优雅

这听起来像是JRadioButton的工作,但是如果你在上面添加一个图标,你仍然会得到一个小圆圈,这是相当低的空间效率。我想一个选择是为JRadioButton找到一个替代的外观或绘制代码

另一种选择可能是将JButton添加到ButtonGroup,也可能将JToggleButton.ToggleButtonModel设置为模型,但这并没有达到预期效果,因为标准JButton的绘制代码在选中时不会一直将其按下。也许可以修改JButton代码来实现这一点。就像让它像“按”一样“选择”绘画一样

第三种选择是使用普通的JButton按钮,并添加一个普通的鼠标侦听器来保持按下或不按下按钮,并在按钮之间传递更改


请问有人能就实现这一目标的最佳方法提出建议吗?我错过的一个简单的方法是最好的,但是关于这三个选择中哪一个最好的建议和关于如何开始的指针也会很有用。

那么
按钮组中的普通
JToggleButton
呢?它不是抽象的,您可以用一个
图标实例化一个
,它在被选中时保持按下状态。

请参阅SwingSet2演示:

单击工具栏上的第二个图标(带复选框和单选按钮的图标),然后单击选项卡“单选按钮”。然后单击右侧面板上“显示选项”下的“绘制边框”


演示的源代码位于您的JDK安装目录下,因此,例如在我的PC上,它位于Swing教程中的\jdk1.6.0_01\demo\jfc\SwingSet2\src下:“当您不想要典型的单选按钮或复选框外观时,JToggleButton可能很有用。”非常好,谢谢。我以为我会错过一些简单的东西。对不起,这不是我要找的-你仍然会得到一个小圆圈,并使用额外的空间。事实上,我认为这真的是你要找的。“图像单选按钮”下的圆圈是自定义图像-也就是说,如果您愿意,您可以将其替换为正方形或菠萝,在这种情况下,您将不会得到小圆圈。然后您可以在单选按钮上选择setText(“”)或setText(null):