我意味着功能,抱歉!
使用以下代码,它有一些类可以执行单独的作业。 问题是,因为他们从不打电话给对方,他们在哪个命令中运行?
它们是否同时运行?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Moving extends JPanel implements ActionListener {
int x, y;
Timer timer;
Moving() {
x = 0;
y = 0;
timer = new Timer(10, this);
}
public void actionPerformed(ActionEvent e) {
x += 1;
y += 1;
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (x > 1080 && y > 880) {
x = 0;
y = 0;
} else {
g.fillOval(x, y, 40, 40);
}
}
public static void main(String[] args) {
JFrame f = new JFrame("Moving");
f.setBackground(Color.GREEN);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Moving m = new Moving();
f.add(m);
f.setSize(1100, 900);
f.setVisible(true);
m.timer.start();
}
}
答案 0 :(得分:1)
我假设你的意思是方法,而不是课程。此外,操作顺序取决于您调用它们的顺序,main
方法。在您的示例中,您只调用Moving
构造函数,因此这是您的类中唯一将执行的“方法”。其他的已定义,但不会运行,因为它们未被调用(至少不在您提供的代码中)。
更新(感谢dacwe和cHao):
对不起,我不熟悉JPanel,也不知道在这个类之外调用的方法。在这种情况下,repaint()
方法将间接调用paintComponent()
,同时,定时器将启动对actionPerformed的调用。 This post能够更详细地解释它。
另外,作为注释 - Java通常称其为“动词”方法。部分是大多数面向对象语言的约定,部分原因是函数与类绑定,因此它值得区分。 Javascript是一种函数式语言,将其动词称为“函数”。
答案 1 :(得分:0)
您的程序按以下顺序执行:
main
入口点Moving
contructor Timer
构造函数Timer.start()
类的{li> Timer
方法
每隔10毫秒就会调用Moving.actionPerformed(ActionEvent e)