gpt4 book ai didi

Java Swing定时器问题

转载 作者:行者123 更新时间:2023-12-01 19:06:09 25 4
gpt4 key购买 nike

我(我认为) Swing 计时器有问题。我编写了一些运行良好的代码,然后将其全部移至我的新计算机上,但它很快就无法运行。我用这个方法编写了一个GUI类(基于JFrame):

public void Splash(){
mainPanel.add(Empous.splash, BorderLayout.CENTER);
while(Empous.splash.GetCount() < 3){
//System.out.println(Empous.splash.GetCount());
}
}

该方法是从另一个类调用的。那个 Empous.splash 家伙是一个 JPanel 类,它只运行启动动画。它通过 Swing 计时器来实现这一点。在启动类中,监听器通过以下代码调整我的框架的内容:

private class TimerListener implements ActionListener{
public void actionPerformed(ActionEvent evt) {
counter+=1;
if (counter==1){
title2.setText("In Association With");
title1.setText("El Pollo Diablo Productions");
}
if (counter==2){
remove(title2);
remove(title1);
repaint();
}
if (counter==3){
timer.stop();
}
}
}

现在,如果第一个 block 中的打印语句被注释掉,我的程序将在计时器停止后卡住。如果我取消注释,程序将打印出计数器的值,然后继续下雨。我想取出 print 语句并让 while 循环运行而不执行任何操作,但我不能按照当前的行为方式这样做。任何帮助表示赞赏。

最佳答案

您似乎用这个 while 循环破坏了 Swing 的线程规则:

while(Empous.splash.GetCount() < 3){
//System.out.println(Empous.splash.GetCount());
}

既然您已经有一个 Swing Timer 可以在不释放事件线程的情况下处理此类事情,为什么还要这样做?

如果需要更具体的建议,可以,发布 sscce .

关于Java Swing定时器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051086/

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