Comment puis-je contrôler la largeur de JTextFields dans Java Swing?

Je suis en train d'avoir plusieurs JTextFields sur une seule ligne, mais je ne veux pas qu'ils ont la même largeur. Comment puis-je contrôler la largeur et de rendre certains d'entre eux plus larges que les autres? Je veux qu'ils ainsi prendre jusqu'à 100% de la largeur totale, donc ce serait bien si je pouvais utiliser une sorte de weigthing.

J'ai essayé avec .setColumns() mais ça n'a pas de sens.

Voici un exemple, où je suis à l'aide de trois lignes avec trois chaînes qui devraient apparaître dans les colonnes:

import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class RowTest extends JPanel {

    class Row extends JComponent {
        public Row(String str1, String str2, String str3) {
            this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));

            JTextField fld1 = new JTextField(str1);
            JTextField fld2 = new JTextField(str2);
            JTextField fld3 = new JTextField(str3);

            fld1.setColumns(5); //makes no sense

            this.add(fld1);
            this.add(fld2);
            this.add(fld3);
        }
    }

    public RowTest() {
    this.setLayout(new GridLayout(5,0));

    this.add(new Row("Short", "A long text that takes up more space",
        "Short again"));
    this.add(new Row("Longer but short", "Another long string", "Short"));
    this.add(new Row("Hello", "The long field again",
        "Some info"));
    }

    public static void main(String[] args) {
        new JFrame() {{ this.getContentPane().add(new RowTest());
                            this.pack(); this.setVisible(true); }};
    }

}

source d'informationauteur Jonas | 2010-05-24