0

最初に、私の質問があまり具体的でないように聞こえたら申し訳ありません。私はプログラミングについてあまり知りません。ご容赦ください。

このコードの問題は、四角形をランダムに動かしたいのですが(繰り返し挨拶しているだけです)、run()がアクティブになっていないことです。

コード:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.net.*;

public class Square extends JApplet {

    int X = 10;
    int Y = 10;

    public void init() {
        FlowLayout flow = new FlowLayout();
        setLayout(flow);
    }


    public void paint(Graphics screen) {
        // Paint lines
        Graphics2D g2 = (Graphics2D) screen;
        g2.draw(new Line2D.Double(X, Y, (X + 50), Y));
        g2.draw(new Line2D.Double(X, Y, X, (Y + 50)));
        g2.draw(new Line2D.Double(X, (Y + 50), (X + 50), (Y + 50)));
        g2.draw(new Line2D.Double((X + 50), (Y + 50), (X + 50), Y));
    }

    public void run() {
        System.out.println("Hi2");
        while (true) {
            System.out.println("Hi");
            repaint();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // do nothing
            }
        }
        }

    public static void main(String[] args) {
        JFrame f = new JFrame("Square");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        });
        JApplet applet = new Square();
        f.getContentPane().add("Center", applet);
        applet.init();
        f.pack();
        f.setSize(new Dimension(550,100));
        f.setVisible(true);

    }
}

(おそらく必要のないものをいくつかインポートしたことは知っています。これの一部を別のコードからコピーしました)

4

1 に答える 1

3

メソッドはありますがrun、クラスは実装されていないRunnableため、で使用することはできませんThreadThread実行するには、次のものを実装しRunnableて作成する必要Threadがありinitます。

new Thread(this).start();

UIコンポーネントを操作する場合は、を忘れてくださいThreads。Swingには独自の同時実行メカニズムがあり、UIコンポーネントと安全に対話できます。代わりにスイングタイマーの使用をご覧ください。

于 2013-03-06T22:12:09.110 に答える