SwingGridBagLayout-自动调整字段大小



这是一段由netbeans Swing gui设计器生成的代码。我试图做以下事情:jLabel1jLabel2将只包含尺寸为52x46 px的图像图标,而不包含文本,它们应该固定在行的左侧和右侧,jTextField2有望填补jlabels之间的空白,并自动重设为全屏/视图宽度。

问题是,无论窗口/视图的大小如何,jTextField2都保持相同的宽度…初始宽度取决于字段内硬编码文本的长度。。。

你知道怎么做吗?

private void initComponents() {
    javax.swing.JLabel jLabel1;
    javax.swing.JLabel jLabel2;
    javax.swing.JTextField jTextField2;
    java.awt.GridBagConstraints gridBagConstraints;
    jLabel1 = new javax.swing.JLabel();
    jTextField2 = new javax.swing.JTextField();
    jLabel2 = new javax.swing.JLabel();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setLayout(new java.awt.GridBagLayout());
    jLabel1.setText("ABC");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
    getContentPane().add(jLabel1, gridBagConstraints);
    jTextField2.setText("some text field content");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    getContentPane().add(jTextField2, gridBagConstraints);
    jLabel2.setText("ABC");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
    getContentPane().add(jLabel2, gridBagConstraints);
    pack();
}

请参阅GridBagLayout 的文档

网格行李约束.weightx,网格行李约束-weight

用于确定如何分配空间,这对于指定调整大小行为非常重要。除非您指定了至少行(weightx)和列(weighty)中的一个组件,所有组件在其容器的中心聚集在一起。这是因为当权重为零时(默认值),GridBagLayout对象在其单元格网格和容器。

jTextField2.setText("some text field content");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
getContentPane().add(jTextField2, gridBagConstraints);

最新更新