-2

私は機能を意味しました、申し訳ありません!

次のコードでは、個別のジョブを実行するいくつかのクラスがあります。問題は、彼らはお互いに電話をかけないため、どの順序で実行するかです。

それらは同時に実行されますか?

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();
    }
}
4

2 に答える 2

1

クラスではなくメソッドを意味していると思います。さらに、操作の順序は、mainメソッドを呼び出す順序によって決まります。あなたの例では、Movingコンストラクターのみを呼び出しているため、それがクラスで実行される唯一の「メソッド」です。他のものは定義されていますが、呼び出されていないため実行されません (少なくとも提供したコードでは)。

更新 (dacwe と cHao に感謝): 申し訳ありませんが、私は JPanel に詳しくなく、このクラスの外部で呼び出されるメソッドを知りませんでした。この場合、repaint()メソッドは間接的に を呼び出しますがpaintComponent()、タイマーはactionPerformedへの呼び出しを開始します。 この投稿は、それをより詳細に説明するのに適しています。

また、注意として、Java は通常、その「動詞」メソッドを呼び出します。一部はほとんどの OO 言語の規則であり、一部は関数がクラスに関連付けられているため、その区別に値します。関数型言語である Javascript は、その動詞を「関数」と呼びます。

于 2012-05-12T22:54:11.727 に答える
0

プログラムは次の順序で実行されます。

  1. mainエントリーポイント
  2. Moving請負業者
  3. Timerコンストラクタ
  4. Timer.start()Timerクラスのメソッド
  5. Moving.actionPerformed(ActionEvent e)10ミリ秒ごとに呼び出されます
于 2012-05-12T23:00:28.610 に答える