【问题标题】:Why does setting resizable to false cause some padding to appear? [duplicate]为什么将 resizable 设置为 false 会导致出现一些填充? [复制]
【发布时间】:2016-04-26 15:46:39
【问题描述】:

这是了解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 窗口(即没有这些填充)。

【问题讨论】:

    标签: java swing


    【解决方案1】:

    从这个discussion看来,如果你改变setResizablepack的顺序,这个问题就不会再出现了(我测试过,它有效)。

    所以按以下顺序调用它们:

    1)

    frame.setResizable(false);
    

    2)

    frame.pack();
    

    【讨论】:

    • 酷,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-01-31
    • 2016-02-06
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2013-05-09
    • 2016-07-29
    • 1970-01-01
    相关资源
    最近更新 更多