我们的Swing GUI有一个带有白色控件的黑色面板。但是,面板上的JCheckBox实例始终将聚焦环显示为黑色。渲染聚焦环时,似乎忽略了前景色。这是一个示例,其中我将内容窗格的背景设置为灰色,以便可以看到聚焦环:
这是我正在使用的代码:
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
...
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/