摇摆的颜色。使用drawString()java时跳过白色
当我试图在黑色背景上画白色字母时,我注意到了一些奇怪的东西
public WhiteOnBlackPanel() {
setBackground(Color.BLACK);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(new Color(255,255,255));
g.drawString("Hello World",100,100);
g.drawLine(0,0,100,100);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.add(new WhiteOnBlackPanel());
frame.setTitle("Hello World");
frame.setSize(600,400);
frame.setLocation(100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); // The frame is visible from now on
}
!不要看图像中的代码,只看框架
给我这个:
然而,界线画得很好
当我用一种不同但非常接近的颜色(2542555)时,我得到了这个
为什么java.awt.Graphics
阻止绘制纯白(255255)字母(即使是在黑色背景上)
蒂娅,查理
# 1 楼答案
在添加所有组件并进行设置后,最后调用setVisible(true)。不要覆盖“绘制”,而要覆盖“绘制组件”。例如,这很好:
# 2 楼答案
jdk1中的一个bug。8.0_20,至少在Linux(Ubuntu)中:0xFFFFFFFF显示为黑色。更改alpha或其中一个RGB值会导致“几乎为白色”
jdk1。7.0_67在同一系统上运行良好
检查了所有形式的setColor
之后发现报告了错误:JDK-8054638 : White color is not painted
受影响的版本:8u11,8u25
这个bug只影响Linux;在Windows上,一切正常