"Please wait" 有延迟的消息
"Please wait" message with delay
我有一个很长的任务,我在执行过程中显示 "please wait" 消息。
我为此使用 SwingWorker。但是有时长任务并不长,所以我想延迟1秒显示消息,但我不知道该怎么做。
SwingWorker<Void, Void> mySwingWorker = new SwingWorker<Void, Void>(){
@Override
protected String doInBackground() throws InterruptedException
/** Execute some operation */
}
@Override
protected void done() {
dialog.dispose();
}
};
mySwingWorker.execute();
JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
JPanel panel = new JPanel(new BorderLayout());
panel.add(progressBar, BorderLayout.CENTER);
panel.add(new JLabel("Please wait......."), BorderLayout.PAGE_START);
dialog.add(panel);
dialog.pack();
dialog.setLocationRelativeTo(win);
dialog.setVisible(true);
}
为什么不在 "please wait"
的每次显示之间使用 Thread.sleep(1000);
一个简单的方法是设置
long startTime = System.getNanoTime();
然后在显示 "please wait" 之前,您可以检查它是否 > 1 秒(1×10^9 纳米)
这可能不是最有效的方法,但它会起作用
在开始 SwingWorker
之前,开始一个 Swing Timer
(至少)延迟一秒并设置不重复。
将此 Timer
传递给您的 SwingWorker
,以便它可以访问它。当worker的done
方法被调用时,停止Timer
如果 Timer
被触发,您将显示您的等待消息。
只要稍加努力,您就可以将整个东西包装在一个自包含的 class 中,使用 SwingWorker
的 PropertyListener
支持来检测工作人员何时开始和完成
我有一个很长的任务,我在执行过程中显示 "please wait" 消息。 我为此使用 SwingWorker。但是有时长任务并不长,所以我想延迟1秒显示消息,但我不知道该怎么做。
SwingWorker<Void, Void> mySwingWorker = new SwingWorker<Void, Void>(){
@Override
protected String doInBackground() throws InterruptedException
/** Execute some operation */
}
@Override
protected void done() {
dialog.dispose();
}
};
mySwingWorker.execute();
JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
JPanel panel = new JPanel(new BorderLayout());
panel.add(progressBar, BorderLayout.CENTER);
panel.add(new JLabel("Please wait......."), BorderLayout.PAGE_START);
dialog.add(panel);
dialog.pack();
dialog.setLocationRelativeTo(win);
dialog.setVisible(true);
}
为什么不在 "please wait"
的每次显示之间使用Thread.sleep(1000);
一个简单的方法是设置
long startTime = System.getNanoTime();
然后在显示 "please wait" 之前,您可以检查它是否 > 1 秒(1×10^9 纳米)
这可能不是最有效的方法,但它会起作用
在开始 SwingWorker
之前,开始一个 Swing Timer
(至少)延迟一秒并设置不重复。
将此 Timer
传递给您的 SwingWorker
,以便它可以访问它。当worker的done
方法被调用时,停止Timer
如果 Timer
被触发,您将显示您的等待消息。
只要稍加努力,您就可以将整个东西包装在一个自包含的 class 中,使用 SwingWorker
的 PropertyListener
支持来检测工作人员何时开始和完成