我想在我的程序复制一些文件时显示一个"请稍候"的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()",但没有奏效。我在这个函数中调用加载器类:
public void analyzeAndCopy(){
// Show loading Frame
Loader loader = new Loader();
loader.run();
[... copy code...]
// Hide loading Frame
loader.destroy();
}
请稍候 JFrame 显示为空白,并在复制文件时保持(根据需要)并在之后消失,但它一直保持空白。
我认为它可能与线程有关,我试图创建一个第二个线程来调用 JFrame,但它不起作用。我的想法快用完了...
任何帮助将不胜感激! :)
谢谢
尝试替换
loader.run();
跟
new Thread(loader).start();
并在方法运行中添加一行:
loadingFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
你可以用 JDialog 代替 JFrame