2016-08-04 31 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没有,但没有发生任何错误,该程序只是无所事事。