java - 如何更改 JCheckBox 中聚焦环的颜色?

标签 java swing jcheckbox

我们的 Swing GUI 有一个带有白色控件的黑色面板。然而,面板上的 JCheckBox 实例始终将聚焦环显示为黑色。渲染聚焦环时似乎忽略了前景色。下面是一个示例,我将内容 Pane 背景设置为灰色,以便对焦环可见:

enter image description here

这是我正在使用的代码:

import javax.swing.*;
import java.awt.*;

public class ScratchSpace {

    public static void main(String[] args) throws Exception {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JCheckBox checkBox = new JCheckBox("Hello cruel world");
                checkBox.setForeground(Color.WHITE);
                checkBox.setOpaque(false);

                JPanel contentPane = new JPanel();
                contentPane.setOpaque(true);
                contentPane.setBackground(new Color(0.5f, 0.5f, 0.5f));
                contentPane.add(checkBox);

                JFrame frame = new JFrame();
                frame.setContentPane(contentPane);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

如何告诉 JCheckBox 以特定颜色渲染聚焦环?理想情况下,它会使用控件的前景色。

最佳答案

您可以尝试更改外观属性 CheckBox.focus,注意,这样做会影响所有 JCheckBox...

enter image description here

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestCheckBox {

    public static void main(String[] args) {
        new TestCheckBox();
    }

    public TestCheckBox() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                UIManager.put("CheckBox.focus", Color.RED);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new GridBagLayout());
                frame.add(new JCheckBox("Hello world"));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}

关于java - 如何更改 JCheckBox 中聚焦环的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340606/

相关文章:

java - 如何使 'double' 与 'integer' 对应

java - @拆解后, hibernate 100ms,测试全部通过

java - 根据文本字段过滤jTable

java - 添加鼠标监听器后无法单击选项卡

Java,如果勾选多个复选框?

java - 如何在java中为复选框文本编写上标单词?

java - 如何在java或jsp中对查询结果应用where条件

java.lang.NullPointerException : Inflater has been closed On InputStreamReader 异常

Java Swing : how do I define how a JTree displays the "user object"?

Java JCheckBoxMenuItem 仅在选择时触发事件