如何在执行一个动作时执行另一个动作?
How to execute another action while one action is executing?
我的图形用户界面 class 扩展了 JFrame
。 GUI 包含两个 JButton
表示(start_button 和 view_button)。
JButton start_button;
JButton view_button;
按下start_button后要执行的操作需要一些时间(从2分钟到5分钟不等)。
start_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...
//action executing. May take 2 to 5 min to complete.
}
});
当此操作正在执行时,我想在 JDialogue
内的单独 TextPane
中查看此操作的状态日志。并且这个 JDialogue
通过按 view_button
可见。
view_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
myJDialogue.setVisible(true);
}
});
但是,除非 start_button
执行的操作完成,否则我无法访问任何 gui 组件。因此我无法通过按 view_button
来检查实时状态日志。
当一个动作正在运行时我怎么能这样做?请帮忙。谢谢
您需要在单独的 Thread
中执行较长的 运行 任务,这样您就不会阻止 GUI 响应事件。
阅读 Concurrency 上的 Swing 教程部分了解更多信息。也许 SwingWorker
是最简单的方法,因为它会为您创建线程并在线程完成时通知您,以便您更新 GUI。
我的图形用户界面 class 扩展了 JFrame
。 GUI 包含两个 JButton
表示(start_button 和 view_button)。
JButton start_button;
JButton view_button;
按下start_button后要执行的操作需要一些时间(从2分钟到5分钟不等)。
start_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...
//action executing. May take 2 to 5 min to complete.
}
});
当此操作正在执行时,我想在 JDialogue
内的单独 TextPane
中查看此操作的状态日志。并且这个 JDialogue
通过按 view_button
可见。
view_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
myJDialogue.setVisible(true);
}
});
但是,除非 start_button
执行的操作完成,否则我无法访问任何 gui 组件。因此我无法通过按 view_button
来检查实时状态日志。
当一个动作正在运行时我怎么能这样做?请帮忙。谢谢
您需要在单独的 Thread
中执行较长的 运行 任务,这样您就不会阻止 GUI 响应事件。
阅读 Concurrency 上的 Swing 教程部分了解更多信息。也许 SwingWorker
是最简单的方法,因为它会为您创建线程并在线程完成时通知您,以便您更新 GUI。