DEFAULT_SIZE和PREFERRED_SIZE之间有什么区别?

cd1*_*cd1 6 java size swing resize grouplayout

我使用的Swing的GroupLayout我感到困惑的价值观GroupLayout.DEFAULT_SIZEGroupLayout.PREFERRED_SIZE.我永远不知道何时在方法中使用它们GroupLayout.addComponent(Component, int, int, int).

假设我有这个代码:

GroupLayout l = ...;

l.setHorizontalGroup(l.createSequentialGroup()
    .addComponent(tf1)
    .addComponent(tf2));

l.setVerticalGroup(l.createParallelGroup()
    .addComponent(tf1)
    .addComponent(tf2));
Run Code Online (Sandbox Code Playgroud)

JTextField在一条线上有两个s GroupLayout(一个顺序组水平,一个平行组垂直).如果我现在调整窗口大小,两个组件都获得可用空间(每个50%).但是我只希望第一个文本字段水平增长/缩小,只希望第二个文本字段垂直增长/缩小.我应该使用什么值min,prefmax来实现这个目标?我知道我可以尝试一下,看看哪种组合有效,但我想知道这个问题背后的原因.

tra*_*god 4

可以在如何使用 GroupLayout:组件大小和可调整大小中找到一些指导。关于DEFAULT_SIZEPREFERRED_SIZE

它们可以用作方法中的参数

 addComponent(Component comp, int min, int pref, int max)
Run Code Online (Sandbox Code Playgroud)

强制调整组件大小(允许缩小和增大):

 group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
Run Code Online (Sandbox Code Playgroud)

这允许组件在零大小(最小)到任何大小之间调整大小(Short.MAX_VALUE因为最大大小意味着“无限”)。如果我们希望组件不缩小到低于其默认最小大小,我们将GroupLayout.DEFAULT_SIZE在第二个参数中使用 0 而不是。

要使组件固定大小(禁止调整大小):

 group.addComponent(component, GroupLayout.PREFERRED_SIZE,
     GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)...
Run Code Online (Sandbox Code Playgroud)

有趣的是,常数值为负,因此它们不能被误认为是实际约束。