以下是了解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);
这就是它所显示的:
现在,当我将frame.setResizable(false);
更改为frame.setResizable(true);
时,其工作方式如下(我没有做任何限制,只是在启动后):
问题: 第一个示例中的填充来自哪里?如何在第二个例子中创建resizable = false
窗口(即没有这些填充)。
答案 0 :(得分:1)
从这个discussion看,如果你改变setResizable
和pack
的顺序,那么问题就不会再发生了(我测试了它并且它有效)。 / p>
所以按此顺序调用它们:
1)
frame.setResizable(false);
2)
frame.pack();