gpt4 book ai didi

Java 8 Swing 更改 jToggleButton 的颜色

转载 作者:行者123 更新时间:2023-12-01 18:42:47 24 4
gpt4 key购买 nike

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

laserOnOff.setBackground(Color.GREEN);
laserOnOff.setOpaque(true);
laserOnOff.setBorderPainted(false);

但这会改变按钮的形状,当我切换按钮时,只有文本的背景会改变颜色。我也尝试过

UIManager.put("ToggleButton.select", Color.GREEN);
SwingUtilities.updateComponentTreeUI(laserOnOff);

但这没有用。能够更改 jToggle 按钮颜色的简单方法是什么?

(在附图中,我希望按钮看起来像右侧的按钮,只是绿色) What the jToggle button looks like if it is selected. jToggle Button not selected

最佳答案

也许我误解了你的问题。尽管如此,这里有一个minimal example包含单个 JToggleButtonSwing 应用程序。最初,该按钮具有白色背景,其文本为激光关闭。当用户单击按钮时,文本将更改为激光打开,背景颜色将更改为绿色。当用户第二次单击该按钮时,文本将恢复为激光关闭,背景颜色也恢复为白色。因此,每次连续激活按钮时,按钮都会不断切换其文本和背景颜色。我希望这对您有帮助。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.WindowConstants;

public class TogglTst implements ActionListener, Runnable {

@Override // java.lang.Runnable
public void run() {
createAndShowGui();
}

@Override // java.awt.event.ActionListener
public void actionPerformed(ActionEvent actnEvnt) {
Object src = actnEvnt.getSource();
JToggleButton toggle = (JToggleButton) src;
if (toggle.isSelected()) {
toggle.setText("Laser On");
}
else {
toggle.setText("Laser Off");
}
}

private void createAndShowGui() {
JFrame frame = new JFrame("JSP");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(createButtonsPanel(), BorderLayout.PAGE_END);
frame.setSize(450, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

private JPanel createButtonsPanel() {
JPanel buttonsPanel = new JPanel();
JToggleButton toggle = new JToggleButton("Laser Off");
toggle.setBackground(Color.WHITE);
toggle.addActionListener(this);
buttonsPanel.add(toggle);
return buttonsPanel;
}

public static void main(String[] args) {
UIDefaults dflts = UIManager.getLookAndFeelDefaults();
dflts.put("ToggleButton.select", Color.GREEN);
EventQueue.invokeLater(new TogglTst());
}
}

关于Java 8 Swing 更改 jToggleButton 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59889572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com