【发布时间】:2011-06-05 14:32:39
【问题描述】:
我在以下代码中使用重绘方法时遇到问题。请建议如何使用重绘方法,以便我的屏幕更新为小动画。 这是我的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class movingObjects extends JPanel {
Timer timer;
int x = 2, y = 2, width = 10, height = 10;
public void paintComponent(final Graphics g) { // <---- using repaint method
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
g.setColor(Color.red);
g.drawOval(x, y, width, height);
g.fillOval(x, y, width, height);
x++;
y++;
width++;
height++;
}
};
new Timer(100, taskPerformer).start();
}
}
class mainClass {
mainClass() {
buildGUI();
}
public void buildGUI() {
JFrame fr = new JFrame("Moving Objects");
movingObjects obj = new movingObjects();
fr.add(obj);
fr.setVisible(true);
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setSize(1300, 700);
}
public static void main(String args[]) {
new mainClass();
}
}
【问题讨论】:
-
我以前从未见过在paintComponent 方法中创建的ActionListener。您会因创造力而获得积分,但不会因功能而获得积分。从 paintComponent 方法中获取它。
-
@Hovercraft Full Of Eels 你能说出背后的原因吗?
-
你在 2 天前得到了这个问题的答案:stackoverflow.com/questions/6228775/…。不要浪费我们的时间,并注意给出的答案。我告诉过你不要在paintComponent() 中有循环。我为您提供了 Swing 教程的链接,该教程解释了如何进行绘画以及如何使用计时器。不要指望我们用勺子喂代码。
标签: java swing user-interface graphics