2016-08-04 46 views
-1

我的應用程序在eclipse IDE上運行良好,但導出後,名聲不會重新繪製。 我試圖通過去除兩個JPanels重建奠定了JFrame的,並與更多的面板&這裏再次添加它們是我的代碼:java應用程序GUI導出後響應不同

應用程序首先調用buildGUI()

private void buildGUI(){ 
     setTitle("MyApp"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setContentPane(new BackGroundImagePanel()); 
     setResizable(false); 
     getContentPane().setLayout(new GridBagLayout()); 
     c = new GridBagConstraints(); 

     /* 
     *set up GridBagConstraints and add the two panels 
     */ 

     pack(); 
     setSize(700, 700); 
     revalidate(); 
     setLocationRelativeTo(null); 
    } 

在用戶輸入時做一些計算&調用reBuildGUI():

private void reBuildGUI(){ 
     //Clean the frame. 
     remove(firstPanel); 
     remove(secondPanel); 
     //removeAll() doesn't work for me; 
     validate(); 
     repaint(); 

     /* 
     *set up GridBagConstraints and more panels 
     */ 

     pack(); 
     setSize(700, 700); 
     repaint(); 
     validate(); 
} 
再次

,在IDE但不作爲獨立的罐子應用工作perfict,在調用reBuildGUI()沒有發生! 試圖使用驗證(),重新驗證()& pack()以不同的順序沒有收益?

+3

不知道任何人都可以在沒有發佈[mcve]的情況下回答這個問題,而不是確保您將所有圖像作爲類資源而不是文件。如果您仍然需要幫助,那麼請隔離錯誤併發布您的MCVE。 –

+1

如果你想讓'JFrame'成爲一個特定的大小*或*使用'pack()',不要使用'setSize()'*和*'pack()',使用'setSize()' 'JFrame'是儘可能小的尺寸以適合其子組件。 – MasterBlaster

回答

0

氣墊船:你是對的代碼是不夠的,抱歉,但我會粘貼的代碼頁,並不足以調試此。

這裏是故障排除: - 指示記錄器登錄到文件(使用文件處理程序)。 - 找到記錄器停止的地方。 - 添加更精細&最好的日誌記錄,直到找到錯誤。

錯誤是在這條線埋遠在內心深處的另一個類方法:

addOnImage = ImageIO.read(getClass().getClassLoader().getResource("images/AddTextOn.png")); 

實際的文件名是「ADDTextOn.png」但是Eclipse是能夠把它讀作「AddTextOn.png」,而JRE沒有,但沒有發生任何錯誤,該程序只是無所事事。