GridBagLayout - JFormattedTextFields太少了?

时间:2012-10-09 08:35:10

标签: java eclipse swing user-interface gridbaglayout

我在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中为它们提供宽度?

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

这里有几个选项:

  1. 设置JFormattedTextField的columns属性(这最终会影响文本字段的首选大小)
  2. 更改GridBagConstraint
    • 将weightx属性设置为大于0的内容
    • 将填充属性设置为HORIZONTAL

答案 2 :(得分:3)

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