有没有办法在java中调用pack()时阻止JFrame调整大小?

时间:2016-01-28 17:59:49

标签: java swing jframe

我试图制作一个程序,我希望它能够最大限度地开始,但我也希望能够调整它的大小。唯一的问题是,每当我拨打frame.pack()时,它会在我调用frame.setExtendedState(int) java.awt.Frame.MAXIMIZED_BOTH时快速恢复到我设置的大小,以便在我第一次使帧最大化时打开它。有办法防止这种情况吗?

2 个答案:

答案 0 :(得分:2)

  

我想让它开始最大化,

这是状态的一次性设置,可以随时更改。

所以你应该可以使用:

frame.setExtendedState(JFrame.NORMAL);
frame.pack();
// or pack() / setExtendedState(...)

如果用户希望这样做,则不会阻止用户点击最大化图标。

答案 1 :(得分:0)

最大化和可调整大小,

public class Test {

    public static void main(String[] args) {

        SwingUtilities.invokeLater(() -> {

            JFrame f = new JFrame();
            f.setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);

            final Timer tt = new Timer(68, e -> {
                Dimension r = f.getSize();
                f.setExtendedState(java.awt.Frame.NORMAL);
                f.pack();
                f.setSize(r);
            });
            tt.setRepeats(false);
            tt.start();

            f.setVisible(true);

        });

    }
}