6 Stimmen

Anker- und Docking-Steuerungen in Java Swing

In .net gibt es eine Steuerung namens Verankerung, die verwendet wird, um Steuerelemente dynamisch mit dem Formular neu zu dimensionieren. Wenn ein Steuerelement an ein Formular verankert ist und das Formular neu dimensioniert wird, bleibt der Abstand zwischen dem Steuerelement und den Ankerpositionen erhalten.

Meine Frage ist, ob es in Java Steuerelemente gibt, die dieselbe Funktionalität wie die Verankerung in .net haben.
Als Beispiel habe ich ein Textfeld ausgewählt und es auf das Panel gesetzt und richtig dimensioniert. Wenn ich jetzt die Größe des Fensters (JFrame) ändere oder das Fenster maximiere, wird das Textfeld nicht den gleichen Abstand wie zuvor beibehalten. Ich benutze NetBeans und habe keine Eigenschaften im Paletten-Manager gefunden, die meine Frage beantworten. Bitte erkläre mir das mit einem Beispiel oder einigen Links.

4voto

Telcontar Punkte 4723

Java Swing verwendet Layout-Manager, um die Größe und Position der visuellen Komponenten zu verwalten. Dies ist das offizielle Java-Tutorial zur Verwendung dieser Layout-Manager:

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

Und es gibt eine kurze Beschreibung der häufigsten Layout-Manager

FlowLayout (Standard): Es ordnet die Komponenten von links nach rechts und von oben nach unten an.

BorderLayout: Es teilt den Container in NORTH, SOUTH, WEST, EAST und CENTER. Nur eine Komponente pro Position. Komponenten an den Rändern dehnen sich aus, und die Center-Komponente verwendet den verfügbaren Platz.

GridLayout: Sie initialisieren den Manager, indem Sie angeben, wie viele Zeilen und Spalten das Raster haben soll. Jede Zelle hat die gleiche Größe, und Sie beginnen damit, Komponenten in der oberen linken Zelle hinzuzufügen.

GridBagLayout: Der feingliedrigste Layout-Manager, mit dem Sie alles machen können, aber er ist etwas kompliziert. Sehen Sie sich die Java-Dokumentation dazu an.

NullLayout (wenn Sie den Layout-Manager des Containers auf null setzen): Kein Layout-Manager, die Komponenten verwenden die Positionierungs- und Größeneigenschaften, um auf den Komponenten angezeigt zu werden.

Und natürlich können Container innerhalb anderer Container einen anderen Layout-Manager als ihren Eltern verwenden. Das Kombinieren von Layout-Managern ist eine schwierige Kunst, die es zu lernen gilt.

1voto

Adamski Punkte 52945

Netbeans verfügt über integrierte Unterstützung zum Entwerfen von GUIs mit dem Matisse GUI-Builder. Dies ist das, was man am ehesten dem Drag & Drop-Stil der Formularerstellung nahe kommt, der in Umgebungen wie VB verfügbar ist.

(Persönlich bin ich jedoch kein großer Fan dieses Ansatzes, da er eine Menge Code auto-generiert, der schnell nicht mehr wartbar wird, besonders wenn nicht alle Mitglieder Ihres Entwicklungsteams Netbeans verwenden.)

1voto

Nick Holt Punkte 32407

Wenn Sie nur eine einzige Steuerung haben, ist es am besten, java.awt.BorderLayout zu verwenden und Ihre Steuerung mit BorderLayout.CENTER hinzuzufügen.

Wenn Sie mehrere Steuerelemente haben, müssen Sie java.awt.GridBagLayout verwenden.

Sie müssen Folgendes einstellen:

gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
gridBagConstraints.fill = GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1;
gridBagConstraints.weighty = 1;

beim Hinzufügen der Steuerung, die Sie neu dimensionieren möchten.

Es gibt ein Tutorial dazu hier:

http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X