0

我在 SWING 中编写一个 gui:

    JLabel tLabel1 = new JLabel("Name: ");
    JFormattedTextField tTextField1 = new JFormattedTextField();
    textBoxes.add(tTextField1);
    JLabel tLabel2 = new JLabel("Maximaler Preis: ");
    JFormattedTextField tTextField2 = new JFormattedTextField();
    textBoxes.add(tTextField2);

        GridBagLayout tLayout = new GridBagLayout();
        mainFrame.getContentPane().setLayout(tLayout);
//      tLayout).setAutoCreateGaps(true);
//      tLayout.setAutoCreateContainerGaps(true);

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        gbc.anchor = GridBagConstraints.WEST;

        mainFrame.add(new JLabel("Geben sie bitte die Kriterien für die Suche an:"), gbc);

        gbc.gridwidth = 1;
        gbc.gridy++;
        mainFrame.add(tLabel1, gbc);
        gbc.gridy++;
        mainFrame.add(tLabel2, gbc);
        gbc.gridy++;
        mainFrame.add(tLabel3, gbc);
        gbc.gridy++;
        mainFrame.add(tLabel4, gbc);

        gbc.gridx++;
        gbc.gridy = 1;
        mainFrame.add(tTextField1, gbc);
        gbc.gridy++;
        mainFrame.add(tTextField2, gbc);
        gbc.gridy++;
        mainFrame.add(tTextField3, gbc);    
        gbc.gridy++;
        mainFrame.add(tCombo, gbc);
        gbc.gridy++;
        mainFrame.add(searchButton, gbc);

        gbc.gridy++;
        gbc.gridx = 0;
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        gbc.fill = GridBagConstraints.HORIZONTAL;

        mainFrame.add(tTable, gbc); 
        mainFrame.setSize(800, 500);
        mainFrame.pack();

我的文本字段如下所示:

|

如何在 GridBagLayout 中给它们一个宽度?

4

3 回答 3

4

JTextField.setColumns(int)

于 2012-10-09T08:38:55.180 回答
3

您在这里有几个选择:

  1. 设置 JFormattedTextField 的 columns 属性(这最终会影响文本字段的首选大小)
  2. 通过更改 GridBagConstraint
    • 将 weightx 属性设置为大于 0 的值
    • 将填充属性设置为HORIZONTAL
于 2012-10-09T08:39:44.747 回答
3

您需要在约束中为它们分配权重。权重决定了剩余空间的分配方式,如果您不对任何组件设置权重,那么它们都将获得最小尺寸,并且剩余空间将完全超出布局。

于 2012-10-09T08:41:45.107 回答