为什么设置可调整为false会导致出现一些填充?

时间:2016-04-26 15:46:40

标签: java swing

以下是了解JFrame::setResizable(boolean)工作方式的简单程序:

JFrame frame = new JFrame("Test");
JPanel p1 = new JPanel();
FlowLayout fl = new FlowLayout(FlowLayout.LEADING, 0, 0);

//Adding buttons
p1.setLayout(fl);
p1.setBackground(Color.BLACK);
p1.add(new JButton("1"));
p1.add(new JButton("1"));
p1.add(new JButton("1"));
p1.add(new JButton("1"));
p1.add(new JButton("1"));

//Adding to JFrame
frame.add(p1);
frame.pack();

//Here is where the problem comes
frame.setResizable(false);

//The rest...
frame.setLocationRelativeTo(null);
frame.setVisible(true);

这就是它所显示的:

enter image description here

现在,当我将frame.setResizable(false);更改为frame.setResizable(true);时,其工作方式如下(我没有做任何限制,只是在启动后):

enter image description here

问题: 第一个示例中的填充来自哪里?如何在第二个例子中创建resizable = false窗口(即没有这些填充)。

1 个答案:

答案 0 :(得分:1)

从这个discussion看,如果你改变setResizablepack的顺序,那么问题就不会再发生了(我测试了它并且它有效)。 / p>

所以按此顺序调用它们:

1)

frame.setResizable(false);

2)

frame.pack();