【发布时间】:2014-05-23 09:29:49
【问题描述】:
我是 java GUI 的新手,正在努力学习它。我想自动在屏幕上移动一个圆圈(即不按任何键或执行任何其他操作)。我找到了一种通过做一些动作来移动它的方法,但这不是我需要的。请问谁能告诉我最简单的方法?
我想去掉下面代码中的动作监听器,让圆圈自动移动:
public class MyFirstGraphics extends JFrame {
int x = 100;
int y = 100;
MyFirstGraphics() {
super("Circle");
setSize(800, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setBackground(Color.pink);
JButton f = new JButton("circle");
f.addActionListener(new re());
add(f, BorderLayout.NORTH);
}
private class re implements ActionListener {
public void actionPerformed(ActionEvent e) {
for (int i = 1; i < 50; i++) {
x++;
y++;
repaint();
}
}
}
public void paint(Graphics g) {
super.paint(g);
g.drawOval(x, y, 100, 100);
}
public static void main(String[] args) {
MyFirstGraphics l = new MyFirstGraphics();
l.setVisible(true);
}
}
【问题讨论】:
-
有很多关于 SO 的例子,example(滚动到底部)。您还应该查看Performing Custom Painting 和2D Graphics 和Concurrency in Swing 和How to Use Swing Timers 以了解有关如何实现的详细信息
-
动画也不是一门简单的学科(有趣,但不简单)。上面评论中的链接示例与 Swing 一样简单
-
“我找到了一种通过执行一些操作来移动它的方法,但这不是我需要的。” 为了尽快获得更好的帮助,请发布MCVE(最低限度的完整和可验证示例)。
-
@AndrewThompson 发布了一个示例代码。
-
对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。
标签: java swing animation jframe awt