-1

我的应用程序在 Eclipse IDE 上运行良好,但在导出后,名声不会重新绘制。我正在尝试通过删除两个 JPanel 并使用更多面板再次添加它们来重建 JFrame 的布局,这是我的代码:

应用首先调用 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 上运行良好,但不是作为独立的 jar,调用 reBuildGUI() 时没有任何反应!试图以不同的顺序使用 validate()、revalidate() 和 pack() 而没有收获?

4

1 回答 1

0

气垫船:你说得对,代码还不够,对不起,但我会粘贴几页代码,不足以调试它。

这是故障排除: - 指示记录器登录到文件(使用文件处理程序)。- 找到记录器停止的位置。- 添加更精细和最好的日志记录,直到找到错误。

该错误被深埋在这一行的另一个类方法中:

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

实际的文件名是“ADDTextOn.png”,但 Eclipse 能够将其读取为“AddTextOn.png”,而 JRE 没有,但没有发生任何错误,程序只是什么都不做。

于 2016-08-06T19:00:56.953 回答