java - 启动运行命令时出现问题

标签 java runnable

首先,我想说,如果我的问题听起来不太具体,我很抱歉,我对编程不太了解,请原谅我。

这段代码的问题是我希望它随机移动方 block (右知道它只是反复说“嗨”)但 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);

    }
}

(我知道我导入了一些我可能不需要的东西,我从另一个代码复制了其中一些)

最佳答案

虽然您有一个 run 方法,但您的类没有实现 Runnable,因此它不能在 Thread 中使用。要让您的 Thread 运行,您必须实现 Runnable 并在 init 上创建一个新的 Thread:

new Thread(this).start();

如果您打算与 UI 组件交互,请忘记线程。 Swing有自己的concurrency mechanisms它允许您安全地与 UI 组件交互。看看使用 Swing Timer相反。

关于java - 启动运行命令时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259018/

相关文章:

java - 在 Java 中正确声明 int 类型的多维数组

java - 我如何检查一个字符串是否包含Java中所有重复的字母?

java - Spring批处理和SystemCommandTasklet : cannot pass parameter

Android 处理程序和 Looper.prepare() 问题

android - 获取线程导致 Android 的另一个 Activity

java - 使用Runnable进行并行执行

java - 实现 Runnable 的类中的 Thread 字段,它实例化所述类

java - 在 Linux 上读取 Windows 文本文件 --- MIME 问题?

java - 如何在 Java 小程序中做 3d?

java - 线程如何共享创建它们的同一实例的字段变量?