0
我正在制作一个JFrame,它将从Internet上载入图片。我有这个工作,但这个JFrame的问题是有很多图片,所以他们需要很长时间才能加载。这很好,但我想向用户展示图片正在加载。出于某种原因,我无法让JPanel在加载JFrame中显示。我知道这是一个常见的错误,我已经尝试了很多修复程序,但都没有工作。这里是代码:JPanel不显示在JFrame中
final JFrame weatherLoadPop=new JFrame("Loading weather...");
weatherLoadPop.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
weatherLoadPop.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
weatherPop.dispose();
};
});
weatherLoadPop.setResizable(false);
weatherLoadPop.setBounds(100,50,225,100);
JPanel weatherLoadPanel=new JPanel();
weatherLoadPanel.setBackground(Color.RED);
weatherLoadPanel.setPreferredSize(new Dimension(225,100));
JLabel weatherLoadLabel=new JLabel("Loading...0%");
weatherLoadPanel.add(weatherLoadLabel);
weatherLoadPop.add(weatherLoadPanel);
weatherLoadPop.pack();
weatherLoadPop.validate();
weatherLoadPop.setVisible(true);
我不确定我正在使用pack()和validate()。我不经常使用它们。无论如何,删除它们都无济于事。对我来说,这个问题最奇怪的部分是加载图片的JFrame工作得很漂亮,而JFrame加载更简单。
感谢您的任何帮助。
Thanks Qsp。不太清楚ssce是什么。我点击链接并阅读该页面,但不是您提供ssce的代码?我会释放更多的代码,但我的程序是封闭的源代码。 在注释掉其余的函数之后,它就起作用了。实际上它总是在工作,但是JPanel直到包含它的函数完成才显示。我从来没有见过JPanel显示,因为我在函数结束之前调用了dispose()。 为什么它在显示JPanel之前等待函数完成,我该如何解决这个问题? 非常感谢您的帮助, Cameron –
SSCCE正是我发布的内容,您应该自己做,让人们更快地帮助您(他们不需要准备课程并且可以复制-past和测试/修复你的代码)。 –
看看这个[很好的答案](http://stackoverflow.com/a/9976255/856202)上的类似问题。如果我正确理解你的话,那么当你的函数执行操作正在执行时,你的摆动线程会冻结。所以你应该在一个新的线程中启动你的函数,从而防止JPanel显示上的锁定。如果你需要进一步的帮助,请说。 –