Java Swing GridBagLayout-自动调整字段大小

Java Swing GridBagLayout-自动调整字段大小,java,swing,Java,Swing,这是从netbeans Swing gui设计器生成的一段代码。 我正在尝试执行以下操作:jLabel1和jLabel2将只包含尺寸为52x46 px的图像图标,不包含文本,它们应该固定在行的左侧和右侧,jTextField2有望填补jlabels和自动调整到全屏/视图宽度之间的空白 问题是,无论窗口/视图的大小如何,jTextField2都保持相同的宽度。。。初始宽度取决于字段内硬编码文本的长度 你知道怎么做吗 private void initComponents() { javax

这是从netbeans Swing gui设计器生成的一段代码。 我正在尝试执行以下操作:
jLabel1
jLabel2
将只包含尺寸为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();
}

,

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

jTextField2.setText(“一些文本字段内容”);
gridBagConstraints=new java.awt.gridBagConstraints();
gridBagConstraints.gridwidth=java.awt.gridBagConstraints.RELATIVE;
gridBagConstraints.fill=java.awt.gridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx=1.0//
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);