gpt4 book ai didi

java awt事件队列/调度线程未知源错误?

转载 作者:行者123 更新时间:2023-11-30 03:40:32 25 4
gpt4 key购买 nike

我尝试运行此代码以使用 JFrame 制作图像

主类

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

public class main {

public static void main(String[] args){
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle("kek");

f.add (new GraphicsSurface());

f.setSize(512, 512);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}

GraphicsSurface类

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;

public class GraphicsSurface extends JComponent {

public GraphicsSurface() {
}

public void paint (Graphics g) {
int end = 0;
long redint = 0, greenint = 0, blueint = 0;
int xstart = 0, ystart = 0, xend = 0, yend = 0;
double y = 0, x = 0;
double width = 80;
double angle = 0;
double endpoint = 255;
double curveintensitya = 1.4, curveintensityb = -0.9;
double curvestarta = 30, curvestartb = 150;
double curvelengtha = 15, curvelengthb = 30;
double redvalue = 0, greenvalue = 0, bluevalue = 0;
while (end == 0) {

Graphics2D g2d = (Graphics2D) g;
redvalue = 100 + (y / 2.56);
greenvalue = 50 + (y / 1.28);
bluevalue = 200 + (y / 5.12);
redint = Math.round(redvalue);
greenint = Math.round(greenvalue);
blueint = Math.round(bluevalue);

if (y >= curvestarta && y < (curvestarta + curvelengtha)) {
angle = angle + (curveintensitya / curvelengtha);
}
if (y >= curvestartb && y < (curvestartb + curvelengthb)) {
angle = angle + (curveintensityb / curvelengthb);
}

width = width + angle;
if (width > 512) {
width = 512;
}
x = Math.round(width);
xend = (int) x;
ystart = (int) y;
yend = ystart;
y = y + 1;

if (y > endpoint) {
end = 1;
}

g2d.setColor(new Color(redint, greenint, blueint, 255));

g2d.drawLine(xstart, ystart, xend, yend);
}
}
}

但是我在控制台中得到了这个:

at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

我想知道是什么原因导致了这个问题以及我应该采取什么措施来解决它。

最佳答案

问题出在这一行

g2d.setColor(new Color(redint, greenint, blueint, 255));

代码中的redint、greenintblueint类型为long类型。但是 Color 的构造函数接受 intlong

可以引用文档here

因此解决您的问题:将这些类型从 long 更改为 int 并进行适当的转换。

关于java awt事件队列/调度线程未知源错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897368/

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