【发布时间】:2015-10-24 20:13:56
【问题描述】:
我创建了一个扩展 Rectangle(TransformRect) 的类。我希望它在 JPanel 上随机生成,然后随机移动。到目前为止,我的班级会自行生成,但不会随机移动。当我在我的 TranformPanel 中绘制我的 TransformRect 对象时,它似乎在实际生成之前运行了所有代码。它通过睡眠循环(try、catch)运行,然后使用随机坐标和 1 次使用移动方法实际生成自身。我不知道如何解决这个问题。
变换矩形
import java.awt.Rectangle;
import java.util.Random;
import java.util.concurrent.TimeUnit;
public class TransformRect extends Rectangle{
//instance initializer
{
Random rn = new Random();
this.setBounds(rn.nextInt(450),rn.nextInt(450), 10, 10);
System.out.println(this.getBounds());
}
public TransformRect(){
try {
TimeUnit.SECONDS.sleep(1);
this.translate(10, 10);
System.out.println(this.getBounds());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
转换面板
import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.util.Random;
import java.util.concurrent.TimeUnit;
public class TranformPanel extends JPanel {
private double randomx = 0;
private double randomy = 0;
private int xlist[] = new int[20];
private int ylist[] = new int[20];
public void paintComponent(Graphics g)
{
super.paintComponent(g);
drawTransform(g,randomx,randomy);
}
private void drawTransform(Graphics g,double randomx,double randomy)
{
Graphics2D g2d = (Graphics2D)g;
g2d.draw(new TransformRect());
}
}
EDIT- Camickr:我知道它只绘制一个 TransformRect。问题是翻译方法(this.translate(10, 10)) 不起作用。 TransformRect 并没有在页面周围移动,我不知道如何修复它。
提前致谢!
【问题讨论】:
标签: java class graphics jpanel extends