JOptionPane确认对话后,画布右下两侧的白条?

时间:2016-06-15 15:56:42

标签: java swing joptionpane

所以大家,使用JOptionPane询问用户应用程序是否应该更新,之后我在画布的底部和右侧看到这些白条。尝试删除自动更新的东西,并正常工作。这是我的代码

GameUtils.init();
String version = AutoUpdate.checkForUpdates();
if (Double.parseDouble(version) > AutoUpdate.VERSION) {
    AutoUpdate.update(version);            
    JFrame frame = null;

    try
    {
        frame = new JFrame(GameUtils.data.getString("title"));
    } catch (JSONException e)
    {
        e.printStackTrace();
    }

    frame.getContentPane().setPreferredSize(new Dimension(1000, 500));
    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    frame.setResizable(false);
    frame.pack();
    frame.setLocationRelativeTo(null);
    GameUtils.instance = new Game(frame);

    frame.addWindowListener(new WindowListener() {
        @Override
        public void windowOpened(WindowEvent e) {

        }

        @Override
        public void windowClosing(WindowEvent e) {
            GameUtils.instance.stop();
            System.exit(0);
        }

        @Override
        public void windowClosed(WindowEvent e) {


        }

        @Override
        public void windowIconified(WindowEvent e) {

        }

        @Override
        public void windowDeiconified(WindowEvent e) {

        }

        @Override
        public void windowActivated(WindowEvent e) {

        }

        @Override
        public void windowDeactivated(WindowEvent e) {

        }
    });
    frame.setVisible(true);
    GameUtils.instance.start();
}

here is how it looks协调系统正常工作 我希望它看起来像I want it to look this way

1 个答案:

答案 0 :(得分:1)

当我在JFrame中使用setResizable(false)和pack()方法时,我注意到了同样的问题。 Here您可以找到描述问题的答案,但我找不到适用于我的解决方案。

在我的应用程序中,如果需要,我会使用一种“技巧”:我检查contentPane首选宽度是否等于他的有效宽度,如果不是我回想起pack()方法。

类似的东西:

for(int i=0;i<5 && contentPane.getPreferredSize().width!=contentPane.getSize().width;i++) frame.pack();

当然这不是一个非常好的解决方案,但它适用于我,如果你使用参数来限制pack()应该发生的最大次数,你就没有风险阻止你的gui ..