gpt4 book ai didi

Java绘图框架: Refreshing?

转载 作者:行者123 更新时间:2023-12-02 11:18:15 25 4
gpt4 key购买 nike

作为前言,我对java很陌生。因此,请期待愚蠢的错误。

我正在尝试在 BlueJ 中使用 java 的绘图面板做一个项目,但我不知道如何制作一个具有移动对象的程序。这是一个项目,所以提供了代码。我们必须以任何我们想要的方式修改它。我们无法添加任何其他包。

我知道它与某种循环有关,但我犯了某种类型的错误,它只是打印大量圆圈,而不是每次按刷新时打印新类型。这是代码。

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

public class DrawingPanel extends JPanel {
public void paintComponent(Graphics g)
{
// clear screen
g.setColor(Color.white);
g.clearRect(0,0,500,500);
{
System.out.printf("Spring Design Barker Spring 2018%n");
int x = 125;
int y = 125;
int w = 50;
int h =80;
int b = 50;
int rd = 255 ;
int gn = 255 ;
int bl = 0 ;
Circle c1,c2;
Rectangle r1,r2;
Triangle t1,t2;
Color clr1,c;
clr1 = new Color(rd,gn,bl);
r1 = new Rectangle(x,y,w,h,clr1);
clr1 = new Color(106,96,200);
t1=new Triangle(x,y,w,h,clr1);
clr1 = new Color(220,15,15);
c1=new Circle(x,25,25,clr1);
r1.draw(g); /*display the rectangle */
t1.draw(g); /*display the triangle */
c1.draw(g); /*display the circle */
t1.setH(-h); /*display the triangle */
t1.setColor(new Color(15,220,15)); /*display the triangle */
t1.draw(g); /*display the triangle */

x=200;
y=200;
for(int k=0;k<9;k++)
{
c=new Color(255-k*20,0+k*15,0+k*25); // vary color
c1=new Circle(200,10 * k,50,c);
c1.draw(g); /*display the new circle */
}
//c=new Color(0,255,0); // change paint in can to green
//c2=new Circle(300,50,10,c);
//c2.draw(g); /*display the new circle */
}
}
}

最佳答案

错误在于你一次又一次地画圆圈。 每次循环中的代码运行时,都会绘制一个新的圆圈。你必须明白,当你画圆时,你实际上并不是在重画同一个圆,而是在画一个新的圆。我理解你想做的就是让一个圆圈移动。您可以通过一次又一次运行整个方法来做到这一点。我更喜欢这样做的方法是使用 Swing Timer 。简而言之,这是一种运行循环调用paintComponent()方法的方法。

我实际上正在做一些事情,我正在使用这个库来显示图形。我唯一不喜欢的是它使用大量CPU。也许有更好的方法来做到这一点。

关于Java绘图框架: Refreshing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50120640/

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