gpt4 book ai didi

java - 为什么 JFrame 中的绘图颜色没有更新?

转载 作者:行者123 更新时间:2023-11-30 05:24:22 25 4
gpt4 key购买 nike

所以我正在为我的 java 类编写一个程序,只是为了好玩。它绘制分形,其作用非常简单。除了改变我正在绘制的点的颜色之外,我得到了它的每个组件的工作。我认为我做得对,但显然不是,因为这是我使用 JFrame 的第一个项目,我完全陷入困境。这是我的绘画功能。 (我知道从全局数组中提取值的效率很低,但我在这里画点,所以优化并不那么重要)

public void paint(Graphics g) {

for(int i = 0; i < arr.length; i++) {

g.setColor(new Color((int)Math.random()*256, (int)Math.random()*256, (int)Math.random()*256));
g.drawRect(toX(arr[i], (float)(arr[i])), toY(arr[i], (float)(arr[i])), 1, 1);

}
}

最佳答案

(int)Math.random()*256

类型转换具有非常高的优先级。转换 random() 的结果会将其向下舍入为 0。乘以 256 仍然为零。这将始终是 Color(0, 0, 0) - 黑色。添加额外的括号应该可以修复它。或者使用float的构造函数而不使用乘法。

旁注

您应该在 Swing 中使用 @Override paintComponent,而不是在 JFrame 中。扩展 JComponent 并将其添加到框架中。

全局数组不应该效率低下,但任何全局可变都是一个坏主意。

关于java - 为什么 JFrame 中的绘图颜色没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58966566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com