【问题标题】:How to release a pressed java button如何释放按下的java按钮
【发布时间】:2013-07-29 14:50:38
【问题描述】:

我有执行很长模型的 java 方法。大约需要20分钟。当我按下按钮时,按钮保持按下状态,直到模型完成。我需要创建一个按钮,当按下它时,它会停止模型执行 到目前为止,我有 2 个按钮:停止和开始。我的问题是,当我按下开始按钮时,GUI 中的所有按钮都被冻结,直到模型完成后才能按下它们

如何创建停止按钮?

谢谢,

伊诺特

【问题讨论】:

    标签: java button


    【解决方案1】:

    您应该使用SwingWorker。他们是 specifically designed,用于在 EDT 之外执行长时间运行的任务,同时仍然能够使用进度报告更新 GUI。

    【讨论】:

      【解决方案2】:

      最好在单击按钮后启动线程。如果线程尚未完成,您可以制作一个停止按钮来停止线程。为此,您必须跟踪线程(例如在静态变量中)。

      线程快速指南:http://www.tutorialspoint.com/java/java_multithreading.htm

      请也看看这个:How to properly stop the Thread in Java?

      【讨论】:

        【解决方案3】:

        如果您正在执行一个 20 分钟的任务以响应按钮单击,您可能应该在后台线程中执行它。

        【讨论】:

          【解决方案4】:

          你必须使用多线程。一个基本的例子-

          public class ThreadTest {
          
              private int getSum(int x, int y){
                  return x + y;
              }
          
              public static void main(String args[]) {
          
                  ThreadTest tTest = new ThreadTest();        
                  System.out.println(tTest.getSum(2, 5));
                  // Start the thread
                  new LongProcess().start();        
                  // Since the thread sleeps for two seconds
                  // You will see 5 + 5 = 10 before Done! gets printed out
                  System.out.println(tTest.getSum(5, 5));
          
              }
          }
          
          class LongProcess extends Thread {
          
              public LongProcess(){
                  System.out.println("Thread started.."); 
              }
          
              public void run() {
                  try{                   
                      Thread.sleep(2000);
                      System.out.println("Done!");        
                  } catch(InterruptedException iEx){
                      System.out.println(iEx.toString());        
                  }
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-10-05
            • 2012-07-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多