gpt4 book ai didi

java - 制作更新的 JLabel

转载 作者:行者123 更新时间:2023-12-04 04:48:12 24 4
gpt4 key购买 nike

我是编程新手(我 11 岁,希望 Java 编码成为我的职业,但它现在只是一个爱好 :))并且我刚刚制作了一个倒计时程序,这是类(class):

package me.NoahCagle.JAVA;

import javax.swing.JFrame;

public class Main extends JFrame implements Runnable {
private static final long serialVersionUID = 1L;
public static int width = 600;
public static int height = 500;
public static String title = "Countdown!";
public static boolean running = false;
public int number = 11;
public Thread thread;
Dimension size = new Dimension(width, height);

public Main() {
super(title);
setSize(size);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}

public static void main(String[] args) {
Main m = new Main();
m.start();
}

public void start() {
if (running) {
return;
}

running = true;
Thread thread = new Thread(this);
thread.start();

}

@SuppressWarnings("static-access")
public void run() {
while (running) {
number--;
if (number == -1) {
System.out.println("Done!");
System.exit(0);
}
try {
thread.sleep(1000);
}catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
System.out.println("" + number);
}
}

public void stop() {
if (!running) {
return;
}

running = false;
try {
thread.join();
}catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
}

这可能没有必要,但无论如何。就像我说的,如果您阅读代码,您会注意到它会将值打印到控制台。好吧,如果我能让它显示在 JLabel 上,同时更新。我试过只做 setText(""+ number) 认为因为我有一个线程,它会重新绘制。但这并没有发生。它只是停留在 11。有人可以帮助我吗?谢谢

最佳答案

首先,您可能需要阅读 Concurrency in Swing .在处理多线程和 Swing 时,有一些非常重要的约束。

对于您的问题,您确实应该使用 javax.swing.Timer ,并举例...

  • Java Label Timer and Saving
  • Adding a timer and displaying label text
  • How could I add a simple delay in a Java Swing application?
  • 关于java - 制作更新的 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17851761/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com