【发布时间】:2015-02-24 23:00:27
【问题描述】:
当我尝试在黑色背景上绘制白色字母时,我发现了一些奇怪的东西。
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
}
!不要看图片中的代码,只看框架!
给了我这个:
不过,线条画得很好。
当我采用不同但非常接近的颜色(254、255、255)时,我得到了这个
为什么java.awt.Graphics 会阻止绘制纯白色 (255,255,255) 字母(即使它位于黑色背景上)?
蒂亚,查理
【问题讨论】:
-
呼叫
setVisible(true)LAST,添加所有组件并设置好之后。不要覆盖paint,而是要覆盖paintComponent。最后,永远不要将代码显示为图像。你的 GUI,当然,但从不编码。我们现在如何复制、粘贴和测试您的代码? -
@HovercraftFullOfEels 根据您的建议编辑代码。屏幕截图恰好在后台使用 Eclipse。为问题添加了完整代码。
-
@HovercraftFullOfEels 查看我的代码,
frame.setVisible(true)是最后调用的。不要介意图像中的代码,结果保持不变._. -
从 255,255,255 得到的颜色与 0,0,0:BLACK 相同。我不知道为什么会这样,也没有找到解释或任何暗示这应该是一个错误。此外, setColor( 0xFFFFFF ) 或使用 1.0F,1.0F,1.0F 具有相同的效果。您可以将 alpha 设置为稍微偏离最大值(254 或 0.999),它会显示为白色,但不是 1.0F/255 alpha。
标签: java swing graphics colors background-color