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顯示上的鎖定。如果你需要進一步的幫助,請說。 –