我希望在程序复制某些文件时显示“请稍候”JFrame。 上下文:我有一个第一个JFrame,允许用户选择文件,然后单击按钮来触发副本。这是我希望显示“请等待”JFrame并在完成所有操作后使其消失的时间。 我已成功使这个JFrame出现并消失,但它始终是空白的。 “请等待”JFrame的代码:
public class Loader implements Runnable {
JFrame loadingFrame = new JFrame();
@Override
public void run() {
// Parameters for size and position
loadingFrame.setSize(180,100);
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel("Please wait ...", SwingConstants.CENTER), "Center");
loadingFrame.add(panel);
loadingFrame.setLocationRelativeTo(null);
loadingFrame.setVisible(true);
//((JComponent) loadingFrame.getContentPane()).revalidate();
//loadingFrame.repaint();
}
public void destroy() {
loadingFrame.setVisible(false);
loadingFrame.dispose();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Loader());
}
}
正如你所看到的,我尝试了“repaint()”和“revalidate()”但它没有用。 我在这个函数中调用了Loader类:
public void analyzeAndCopy(){
// Show loading Frame
Loader loader = new Loader();
loader.run();
[... copy code...]
// Hide loading Frame
loader.destroy();
}
请等待JFrame显示为空白,并在复制文件时保持(按照需要),然后消失,但它一直保持空白。 :/
我认为它可能与Thread有关,我试图创建第二个线程来调用JFrame,但它没有用。我的想法已经不多了......
任何帮助将不胜感激! :)
由于
答案 0 :(得分:0)
尝试替换
loader.run();
与
new Thread(loader).start();
并在方法运行中添加一行:
loadingFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
您可以使用JDialog而不是JFrame