2011-06-01 42 views
3

我想在Java Swing应用程序中创建一组按钮,就像您在绘画程序中的典型工具调色板中获得的一样。也就是说,一组小方形按钮,每个按钮都包含一个图标,只有其中一个被按下,当您按另一个按钮时,第一个按钮将被取消选择。我想到了许多解决方案,而且它们都不是很容易/优雅。矩形Java Swing单选按钮?

这听起来像是一个JRadioButton的工作,但如果你添加一个图标到那个,你仍然会得到一个小的圆圈,这是相当低效的空间。我猜想一个选项会为JRadioButton找到另一个外观和感觉或绘画代码。

另一种方法是将JButton添加到ButtonGroup中,可能会将JToggleButton.ToggleButtonModel设置为模型,但这不会产生所需的效果,因为标准JButton的绘画代码在选中时不会保持其压低。 JButton代码可能会被修改来做到这一点。就像使它“按”选择“的方式一样。

第三种方法是使用普通的JButton,并添加一个常用的鼠标监听器来保持它们不被按下,并在按钮之间传递变化。

任何人都可以建议最好的方法来实现目标吗?我错过的一个简单方法是最好的,但是关于这三种方法中哪一种最好的建议以及如何开始的指导也很有用。

回答

7

那么ButtonGroup中的普通JToggleButton呢?它不是抽象的,你可以用Icon实例化一个,并且在选中时保持压低状态。

+0

从Swing指南:“JToggleButton中可能是有用的当你不想要典型的单选按钮或复选框外观。“ – toto2 2011-06-01 17:52:20

+0

完美,谢谢。我以为会有一些容易丢失的东西。 – 2011-06-01 20:33:30

1

见SwingSet2演示: http://java.sun.com/products/plugin/1.4/demos/jfc/SwingSet2/SwingSet2.html

单击工具栏(一个twith的复选框,单选按钮),然后标签“单选按钮”上的第二个图标。然后点击右侧面板的“显示选项”下的“画图边框”。演示的

源代码是你的JDK下安装目录,因此,例如我的电脑上它是在\ jdk1.6.0_01 \演示\ JFC \ SwingSet2的\ src

+0

对不起,这不是我正在寻找的 - 你仍然得到小圆圈,并使用额外的空间。 – 2011-06-02 08:09:53

+0

其实我认为它真的*是*你在找什么。 “图像单选按钮”下的圆圈是自定义图像 - 也就是说,如果您愿意,您可以将它们替换为正方形或菠萝,在这种情况下,您将得不到小圆圈。然后你可以在单选按钮上设置Text(“”)或setText(null)。 :) – ignis 2011-06-02 17:15:27