用户界面如何在Java中设置JButton的背景色?
我正在开发一个Java桌面应用程序。在它里面,我在一个JPanel
上有4JButtons
。现在,我希望每当单击一个按钮时,其背景颜色都会更改为其他颜色(如橙色),以表示已单击该按钮,并且所有其他3个按钮的背景颜色都会重置为其默认颜色(如果其中任何一个按钮的背景色为橙色)
因此,一次只能有一个按钮具有橙色
我目前采用的方法是在JButton按钮1的xxxActionPerformed()
方法中实现了以下代码
button1.setBackground(Color.Orange);
button2.setBackground(Color.Gray);
button3.setBackground(Color.Gray);
button4.setBackground(Color.Gray);
其余的三个按钮也是一样
现在在实际中,我不希望背景颜色为灰色(对于未锁定的按钮)。相反,我希望使用默认的背景色,以便背景色能够根据最终用户平台的外观调整自己以适应GUI的外观
问题1。如何获得默认背景色
问题2。这是正确的方法吗?或者是否有其他机制可以将按钮组中的所有四个按钮分组,以便一次只能有一个按钮具有指定的属性(如单选按钮)
# 1 楼答案
您研究过java中的decorator模式吗?您将一个按钮传递到一个方法中,该方法根据按钮是否是当前活动的按钮(例如,如果它悬停在上方)对其进行装饰
您可以从MouseEvent或ActionEvent方法调用此方法,然后发出一个repaint()。将所有按钮放入一个数组或向量中,循环通过它,将每个按钮传递给decorateButton方法,并将initail布尔值设为false,然后在事件中将其设为true。 通过这种方式,初始值是默认值,然后按钮在动作时被装饰,按钮将显示为一个组的一部分
# 2 楼答案
您可以从UIManager获取按钮的标准背景色:
据我所知,钥匙可能会在不同的外观中发生变化;感觉。下面是一个不错的webstart应用程序,它显示了所有可用的密钥:
http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/
# 3 楼答案
只需使用
null
即可使用默认颜色:# 4 楼答案
如果你想重新设计你的整个按钮界面
在你的主要代码中使用
这就是我使用它的方式。。你也可以有自己的方式
# 5 楼答案
问题1:要获得按钮的GUI颜色,只需执行以下操作
通过这个类(java.awt.SystemColor.*),您可以获得用户界面所有元素的颜色
问题2:我从没听说过分组按钮。那么,我不能回答你这个问题
希望有帮助
# 6 楼答案
下面是基于这个example的“Button.background”的横截面图: