有没有办法多次启动和停止SwingWorker ..?
问题描述:
我有一个开始和停止按钮。我被告知我必须使用SwingWorker。我现在的代码工作正常。我开始并停止它。但是如果我想再次启动它呢?我读到doinBackground方法将只执行一次。有没有办法将它再次熄灭.. ??有没有办法多次启动和停止SwingWorker ..?
现在我不能创建一个Swing Worker的新实例,因为在我的Swing Worker中我有一个while循环,当while(isSet)被设置为True时,当我点击Start按钮时设置为False,当我点击停止按钮。
有没有解决这个问题的方法.. ??
谢谢
答
的SwingWorker的API文档回答你的问题:
的SwingWorker仅设计为 执行一次。多次执行SwingWorker 不会导致 调用doInBackground方法 两次。
你需要每个启动按钮被按下时创建一个新的SwingWorker实例。
答
如您所说,每个SwingWorker都被设计为执行一次。在这方面,每个对象代表一次执行。
因此,一个有效的(也可能是最直接的)方法就是为每次单击开始按钮创建一个新的SwingWorker,如果您确实想要生成每个操作的实例时间。
我不能这样做。当我点击开始按钮时,我在那里设置了一个布尔值。在doinBackground()方法中,我循环了一些东西,直到它被设置为false(当你点击停止按钮时)。如果我每次创建一个新实例,我都不知道这个布尔值何时被标记。 – Biggs 2010-07-16 16:17:59
你应该编辑你的问题来解释这一点。 – DJClayworth 2010-07-16 16:32:56
DJClayworth ....谢谢我编辑了我的问题。你能否给我提供你所指的基本代码片段..? (即有一个对象封装SwingWorker)..谢谢..! – Biggs 2010-07-16 18:59:55