Java8 Swing更改jToggle按钮的颜色

Java8 Swing更改jToggle按钮的颜色,java,swing,user-interface,button,Java,Swing,User Interface,Button,在IntelliJ中,我使用Java8和JavaSwing(GUI)。我有一个jToggle按钮,我想根据是否单击它来更改颜色。我很好的形状和弯曲的按钮角落,只是想通用的蓝色按钮的颜色改变。 我目前有: laserOnOff.setBackground(Color.GREEN); laserOnOff.setOpaque(true); laserOnOff.setBorderPainted(false); 但是这会改变按钮的形状,当我切换按钮时,只有文本的背景会改变颜色。 我也试过了 UIMa

在IntelliJ中,我使用Java8和JavaSwing(GUI)。我有一个jToggle按钮,我想根据是否单击它来更改颜色。我很好的形状和弯曲的按钮角落,只是想通用的蓝色按钮的颜色改变。 我目前有:

laserOnOff.setBackground(Color.GREEN);
laserOnOff.setOpaque(true);
laserOnOff.setBorderPainted(false);
但是这会改变按钮的形状,当我切换按钮时,只有文本的背景会改变颜色。 我也试过了

UIManager.put("ToggleButton.select", Color.GREEN);
SwingUtilities.updateComponentTreeUI(laserOnOff);
但这并不奏效。 更改JTOGLE按钮颜色的简单方法是什么

(在所附图片中,我希望按钮看起来像右边的按钮,只是带有绿色)
也许我误解了你的问题。尽管如此,这里还是有一个Swing应用程序的示例,其中包含一个
JToggleButton
。按钮最初为白色背景,其文本为“激光关闭”。当用户单击按钮时,文本变为激光打开,背景色变为绿色。当用户再次单击按钮时,文本将恢复为“激光关闭”,背景色也将恢复为白色。因此,每次连续激活按钮时,按钮都会不断切换其文本和背景颜色。我希望这对你有帮助

导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.EventQueue;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JToggleButton;
导入javax.swing.ui默认值;
导入javax.swing.UIManager;
导入javax.swing.WindowConstants;
公共类TogglTst实现ActionListener,Runnable{
@重写//java.lang.Runnable
公开募捐{
createAndShowGui();
}
@重写//java.awt.event.ActionListener
已执行的公共无效操作(操作事件操作){
对象src=actnEvnt.getSource();
JToggleButton toggle=(JToggleButton)src;
if(toggle.isSelected()){
toggle.setText(“激光开启”);
}
否则{
toggle.setText(“激光关闭”);
}
}
私有void createAndShowGui(){
JFrame=newjframe(“JSP”);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(createButtonsPanel(),BorderLayout.PAGE_END);
框架。设置尺寸(450300);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
私有JPanel CreateButtonPanel(){
JPanel buttonPanel=新的JPanel();
JToggleButton toggle=新的JToggleButton(“激光关闭”);
切换。设置背景(颜色。白色);
toggle.addActionListener(this);
按钮面板添加(切换);
返回按钮面板;
}
公共静态void main(字符串[]args){
UIDefaults dflts=UIManager.getLookAndFeelDefaults();
放置(“ToggleButton.select”,Color.GREEN);
invokeLater(新的TogglTst());
}
}

简短的回答是-不。车身喷漆是根据外观和感觉而定,而不是摇摆itself@MadProgrammer您能详细说明一下吗?
contentAreaFilled
属性确定平台外观是否绘制了任何“附加”内容(花哨的边框和阴影),但它很少考虑背景颜色,这是填充按钮其余部分的颜色。您可以尝试查看平台的
按钮,但这会变得一团糟,因为您需要考虑每个外观