我想在Java Swing应用程序中创建一组按钮,就像在绘图程序中的典型工具调色板中一样。也就是说,一组小方形按钮,每个按钮都包含一个图标,其中只有一个被按下,当你按下另一个按钮时,第一个按钮被取消选择。我想到了许多解决方案,但它们似乎都不是很容易/优雅。
这听起来像JRadioButton的工作,但如果你添加一个Icon,你仍然会得到一个小圆圈,这是相当低效的空间。我想一个选择是为JRadioButton找到另一种外观和感觉或绘画代码。
另一种选择可能是将JButton添加到ButtonGroup,可能将JToggleButton.ToggleButtonModel设置为模型,但是没有达到预期的效果,因为标准JButton的绘制代码在选择时不会使其保持低调。可能会修改JButton代码来执行此操作。就像让它“被选中”一样,就像“按下”一样。
第三种选择是使用普通的JButton,并添加一个常用的鼠标监听器,让它们保持按下或不按下,并在按钮之间传递变化。
有人可以建议达到目标的最佳途径吗?我错过的一个简单方法是最好的,但建议这三种选择中的哪一种最好,并指出如何开始也是有用的。
答案 0 :(得分:9)
JToggleButton
中的普通ButtonGroup
怎么样?它不是抽象的,您可以使用Icon
实例化一个,并在选中时保持低调。
答案 1 :(得分:1)
参见SwingSet2演示: http://java.sun.com/products/plugin/1.4/demos/jfc/SwingSet2/SwingSet2.html
单击工具栏上的第二个图标(复选框和单选按钮),然后选择“单选按钮”。然后单击右侧面板上“显示选项”下的“绘制边框”。
演示的源代码在你的JDK安装目录下,所以例如在我的电脑上它位于\ jdk1.6.0_01 \ demo \ jfc \ SwingSet2 \ src