【发布时间】:2014-11-21 22:02:04
【问题描述】:
我正在使用 Swing 在 Java 中创建一个小型 GUI。我要做的就是取ArrayListof Circles 并绘制它们。我遇到了两个问题:
1) 在绘制圆圈之前,我必须反复调用我的 draw 方法。如果我只是在没有任何反应的情况下调用我的draw 方法,我会得到一张空白图。如果我在一个运行时间少于 30 毫秒的循环中调用它,它只会绘制我想要绘制的两个圆圈中的第一个。最后,如果我调用它超过 30 毫秒,它会绘制我要绘制的两个圆圈。
和
2) 当我移动其中一个圆圈时,绘图上会出现“闪烁”。
我对 Swing 编程不太熟悉。我查看了示例代码并观看了一些视频 - 我所看到的内容对我来说是正确的。但我想我一定是搞砸了,因为在我看过的视频中看起来不是这样的。
这是我的GUI 课程:
package gui;
import draw.*;
import java.util.List;
import javax.swing.*;
public class GUI extends JFrame {
private CirclePainter drawingBoard = new CirclePainter();
public GUI()
{
setSize(500, 500);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setVisible(true);
this.add(drawingBoard);
drawingBoard.setVisible(true);
}
public void draw(List<Circle> circles)
{
drawingBoard.paintComponent(drawingBoard.getGraphics(), circles);
}
}
我的CirclePainter 班级
package gui;
import draw.Circle;
import javax.swing.*;
import java.awt.*;
import java.util.List;
class CirclePainter extends JPanel
{
public void paintComponent(Graphics graphics, List<Circle> circles)
{
super.paintComponent(graphics);
for(Circle circle : circles)
graphics.fillOval(circle.getX(), circle.getY(), circle.getRadius() * 2, circle.getRadius() * 2);
}
}
编辑:编辑了一些代码,因为这是一个学校项目。剩下的代码应该足以让将来访问的人仍然理解问题。
【问题讨论】:
标签: java swing user-interface jframe jpanel