Erstellen von Textfeldern, die sich dynamisch ändert seine Breite

Mache ich, was ist im Grunde eine Symbolleiste enthält ein Suchfeld und einige Schaltflächen. Ich würde gerne für das Feld "suchen" in der Größe wachsen (nur die Breite), wenn der übergeordnete container breiter, wie wenn der Benutzer stellt den split-Bereich. Derzeit ist das Textfeld und die Tasten bleiben die gleichen Größe und Leerzeichen werden Hinzugefügt, die auf jeder Seite als der container erweitert. Ich kann die Erreichung dieses wachsende Wirkung, indem eine BorderLayout in den Behälter und setzen Sie die Tasten auf LINE_END und das Textfeld in der CENTER. Ich habe das problem mit diesem ist, dass das Textfeld jetzt größer ist als eine standard-text-Feld, und es sieht hässlich aus. Dieses Verhalten macht Sinn, da die BorderLayout manager geben wird, die alle zusätzlichen Leerzeichen (das umfasst eine vertikale und hortizontal Raum) auf die CENTER text-Feld. Ich habe versucht, zu beschränken, dieses vertikale Wachstum, indem eine maximale Größe auf das Textfeld, aber BorderLayout wird nicht zu Ehren.

Hier ist was ich habe:

final JTextField searchField = new JTextField("Enter your search terms");
searchField.setMaximumSize(new Dimension(Integer.MAX_VALUE, 25));
final JPanel controls = new JPanel(new BorderLayout());
controls.add(searchField, BorderLayout.CENTER);
controls.add(new JPanel(){{
    add(new JButton("Search")); add(new JButton("I'm Feeling Lucky"));
}}, BorderLayout.LINE_END);

Es scheint, dass dieses Verhalten ist ein Häufig gewünscht und es sollte einfach zu implementieren, aber ich hatte kein Glück nach der Suche durch alle Oracle/Sun-tutorials und Google-Suchergebnisse.

Jemand irgendwelche Lösungen dazu? Muss ich kleben mit den standard-Java-Swing Komponenten - keine Bibliotheken von Drittanbietern, bitte.

Danke!

InformationsquelleAutor Nate W. | 2011-04-05

Schreibe einen Kommentar