当前位置: 首页 > 知识库问答 >
问题:

Java摆动计时器问题

郭弘方
2023-03-14

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

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

该方法是从另一个类调用的。真是太夸张了。splash guy是一个只运行splash动画的JPanel类。它通过摆动计时器来实现。在splash类中,侦听器通过以下代码调整我的帧的内容:

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();
        }
    }
}

现在,如果第一个块中的print语句被注释掉,我的程序将在计时器停止后冻结。如果我取消注释,程序将打印出计数器的值,然后继续向右下雨。我想取出print语句并让time循环运行而不做任何事情,但我不能按照当前的方式这样做。感谢任何帮助。

共有1个答案

孟征
2023-03-14

您看起来正在使用此time循环打破Swing的线程规则:

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

既然已经有了一个Swing计时器,它可以在不释放事件线程的情况下处理这类事情,为什么还要有这个呢?

不过,对于更具体的建议,是的,发布sscce。

 类似资料:
  • 我首先想到的是:我认为有点非常准确,给出了一个值,其中as请求一个参数;上面写着什么?不要认为<代码>摆动定时器<代码>是准确的吗? 2) 假设用计时一个单词需要x毫秒;如果我们在重复一项任务(突出显示一个单词,如卡拉OK应用程序),我会包含以下代码: 安静地工作很好,但我肯定我不能依靠这一点,因为时间,长度可能会改变!如何克服这个问题?因为几毫秒内的变化可能会给我带来灾难性的后果。 3) 同时,

  • 问题内容: 我在游戏中使用了摇摆计时器,但是当游戏运行时,它似乎有平稳运行的时刻和减速的时刻。 为什么时间在波动? 我该如何解决? 这是我的代码示例。在我的实际程序中,我正在绘制图像,而不仅仅是矩形。还有很多碰撞检测和其他小的计算正在发生。 另外,这是游戏的Jar文件的链接,因此您可以运行它,(满是)明白我的意思。http://dl.dropbox.com/u/8724803/Get%20To%2

  • 我在Swing和设置角色动画方面有一些问题,我有一个带有关键侦听器的JFrame,当用户点击时,它在这里调用我的JPanel方法 这个动画我的角色,但这么快,我们可以看到一个东西,我怎么才能看到动画?

  • 我正在用摇摆计时器打卡NetBeans: 我只是用System.out.print来测试程序,它不是真正程序的一部分。我调用停止()方法,但计时器继续计数。此外,我通过但它的计数速度是原来的两倍。有人能帮忙吗? 编辑: 这是我的计时器(有点像SSCCE): 它不能正常工作,因为秒没有出现,但它确实显示了20次,这就是我想要的。这只是在它自己的应用程序中,在我的实际程序中更容易看到问题。 我注意到游

  • 我有种感觉,我不知道swing Timer是如何工作的。我对JavaGUI API还是新手,我编写的程序只是为了测试自己,帮助我更熟悉它的内部工作。 它应该做的是等待用户按下开始按钮,然后迭代显示(白色或黑色JPanel网格),以1秒的间隔显示一个简单的细胞自动机模拟,并在按下暂停按钮时暂停(与开始按钮相同,但更改名称)。网格中的每个单元格都应该以随机颜色(白色/黑色)开始。它所做的是暂停半秒左右

  • 我是一个java新手,我正在使用netbean创建一个调度程序。我的软件将从用户那里获取时间和操作,并将这些数据输入到单独的数组列表中。然后我使用javax.swing.timer启动倒计时计时器。当用户完成输入数据并点击“运行”按钮时,计时器将从数组列表中的第一个元素中获取运行时间并开始倒计时。当倒计时时间达到0时,计时器将从数组列表中的下一个元素中获取倒计时时间,依此类推。 我的问题是,计时器