而True循环阻止应用程序加载:Java Netbeans

而True循环阻止应用程序加载:Java Netbeans,java,netbeans,netbeans-8,Java,Netbeans,Netbeans 8,尝试在GUI中实现一个简单的时钟,该GUI将不断更新时间。我决定将标签设置为与日历输出等效的字符串,并将其固定在while true循环中。问题是当我尝试这样做时,应用程序永远不会打开。没有错误消息或任何东西,它只是无法打开 我将应用程序分为几个单独的java类: 时间设置代码: package prototype; import java.util.Date; /** * * @author PC */ public class TimeAndDate { Date date =

尝试在GUI中实现一个简单的时钟,该GUI将不断更新时间。我决定将标签设置为与日历输出等效的字符串,并将其固定在while true循环中。问题是当我尝试这样做时,应用程序永远不会打开。没有错误消息或任何东西,它只是无法打开 我将应用程序分为几个单独的java类:

时间设置代码:

package prototype;

import java.util.Date;


/**
 *
 * @author PC
 */
public class TimeAndDate {
Date date = new Date();

void timedisplay(javax.swing.JLabel a){
String hours = String.valueOf(date.getHours());
String minutes = String.valueOf(date.getMinutes());
String seconds = String.valueOf(date.getSeconds());
while(true){
a.setText(hours + ":" + minutes + ":" + seconds);

    }
}

使用上述方法的主GUI窗体的代码

package prototype;

import javax.swing.JLabel;





/**
 *
 * @author PC
 */
public class MainMenu extends javax.swing.JFrame {

    /**
     * Creates new form MainMenu
     */
    public MainMenu() {
        TimeAndDate time = new TimeAndDate();
        initComponents(); 

        time.timedisplay(dateLbl);

    }

如果我执行for循环,代码正常工作(但当然时间不会更新)。我唯一的猜测是,拥有一个无限循环会给程序带来太多无法处理的问题,但我找不到任何关于这个问题的东西(或处理它)。想知道我怎样才能让这个时钟刷新。干杯。

一个词:计时器。我建议你在这个问题上加上摇摆标记。我相信您的问题在于您正在用while循环阻塞gui线程。你不允许其他任何东西运行。阅读有关使用秋千计时器的内容,你会没事的。