java - 为什么我的按钮不可点击? ( java )

标签 java swing event-dispatch-thread thread-sleep

我有一个java swing gui程序,当我单击切换按钮时,计时器开始,但我希望能够单击同一个按钮,计时器停止,现在它不允许我再次单击它。 这是我的计时器类

 public void runningClock(){
      isPaused = false;
      while(!isPaused){
      incrementTime();
      System.out.println("Timer Current Time " + getTime());
      time.setText(""+ getTime());  
      try{Thread.sleep(1000);} catch(Exception e){}
      }
  }


public void pausedClock(){
        isPaused=true;
        System.out.println("Timer Current Time " + getTime());
        time.setText(""+ getTime());
        try{Thread.sleep(1000);} catch(Exception e){}
   }

这是我的主课

private void btnRunActionPerformed(java.awt.event.ActionEvent evt) {                                       

    if(btnRun.getText().equals("Run")){
          System.out.println("Run Button Clicked");
          btnRun.setText("Pause");
          test.runningClock();
    }
    else if(btnRun.getText().equals("Pause")){
        System.out.println("Pause Button Clicked");
        btnRun.setText("Run");
        test.pausedClock();

    }
}                   

最佳答案

您正在使用 Thread.sleep(...)while (something) 循环卡住 Swing 事件线程。解决方案:不要这样做——不要在事件线程上调用占用事件线程并阻止其执行必要任务的代码。相反,更改程序的状态。对于您的时钟,请使用 Swing Timer 。例如,请看我的答案和代码here .

关于java - 为什么我的按钮不可点击? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613743/

相关文章:

java - 通过 Java 在 OS X 上读取文件 - 我的路径正确吗?

JavaFX 文本字段格式设置

java - 通过另一个 JButton 启用/禁用一个 JButton

Java EDT 和生成对话

java - 我已经重写了paintComponent(),那么为什么我的形状没有出现呢?

java - 如何检索必须在另一个线程上计算的值

java - 使用 Java,如何限制对象属性具有特定值?

java - 在Android应用程序中定义位图的大小

java - 尽管关闭了小数宽度,但 OpenJDK 11 Swing 等宽字体在 macOS Retina 上呈现问题

java - 在mysql数据库中插入数据后刷新JTable