簡體   English   中英

Java8 Swing 改變 jToggle 按鈕的顏色

[英]Java8 Swing Change Color of jToggle Button

在 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 按鈕顏色的簡單方法?

(在附加的圖像中,我希望按鈕看起來像右邊的那個,只是帶有綠色) jToggle 按鈕被選中時的樣子。 未選擇 jToggle 按鈕

也許我誤解了你的問題。 盡管如此,這里還是一個包含單個JToggleButtonSwing應用程序的最小示例 最初該按鈕具有白色背景,其文本為Laser Off 當用戶單擊按鈕時,文本變為Laser on ,背景顏色變為綠色。 當用戶第二次點擊按鈕時,文本恢復為關閉激光,背景顏色也恢復為白色。 因此,該按鈕會隨着按鈕的每次連續激活而不斷切換其文本和背景顏色。 我希望這可以幫助你。

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());
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM