Gridbag layout -> how to stop-Komponenten aus der Größenänderung zusammen mit dem Fenster?
Ich habe eine JFframe form in NetBeans 8 und Java 7.
Es hat eine Reihe von labels, Textboxen, dropdowns, etc.
Diese sind eine Spalte auf der linken Seite Größe, alle setzten sich an der Spitze von einander.
Hier ein screenshot:
Wie kann ich verhindern, dass alle diese Komponenten vom festhalten an der rechten Seite und ändern der Größe zusammen mit der Fenster und zur gleichen Zeit haben die Vorschau-frame zu weit rechts Größe zusammen?
Ich bin neu in Java, und das gridbaglayout war die einzige, die ich gefunden ausrichten, alles richtig. Ich möchte nur die linke Seite, um seine Komponenten gut aufgestellt und nicht bewegen. Und ich möchte nur die Rechte Seite, das Bedienfeld, um die Größe je nach Fenster Größe ändern.
Danke,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig alle Spalten sind unterteilt in gleicher Prozentsatz in jeder Zeile.
Kraft der zweiten (rechten) Spalte nehmen die mehr Platz ein, weisen Sie einen höheren Anteil mit
GridBagConstraints#weightx
Vergessen Sie nicht, füllen Sie den horizontalen Raum vollständig mit GridBagConstraints#füllen
Wenn Sie wollen Feste Breite für die erste Spalte, dann die bevorzugte Größe für das linke Seitenteil durch überschreiben
getPreferredSize()
- Methode und weisen Sie 100% Breite auf der rechten Seite.Haben Sie einen Blick auf meine anderen post GridBagLayout: Wie Feste Spaltenbreite?, dass es besser erklären.
Es;s lesenswert Swing Tutorial auf Lösung Gängiger Layout-Probleme
Müssen Sie legen Sie die Füllung Einschränkung KEINE.
Tutorial: How to Use GridBagLayout:
Wenn Sie fügen Sie jede Komponente in das panel, es würde in etwa so Aussehen (aus dem tutorial):
müssen Sie sicherstellen, dass Sie rufen:
für jedes constraints-Objekt für jede Komponente, die Sie hinzufügen, um die Systemsteuerung, die Sie nicht wollen, sich zu Strecken horizontal.
Wenn Sie resusing die gleichen Einschränkungen Objekt für jede Komponente, können Sie einfach legen Sie es einmal für alle wenn dass ist du bist gewünschten Ergebnis.
EDIT:
Als einige andere haben darauf hingewiesen, dass der OP kann wollen, die Felder zu Strecken, aber nur bis zu einer gewissen Grenze (die ist immer noch nicht klar an dieser Stelle). In diesem Fall würde die Verwendung einer Kombination von
als bereits hingewiesen. Beispiel:
Den
MigLayout
manager kann das leicht tun. Es bietet auch viel bessere Portabilität.Beachten Sie die Verwendung der zugehörigen Lücken (r), dialog Abstände (dialog) und die logischen Pixel (lp).
Diese Einheiten übersetzt werden Pixel entsprechend. Auf der anderen Seite
GridbagLayout
sets-spaces direkt in der Pixel, die unzureichend ist, z.B. die schriftart zu ändern oder die Auflösung
wird auf das layout.
Finden Sie auf folgenden code-Beispiel:
Habe ich reproduziert Teil des screenshots und hielten auch Einzug.
Horizontale Trennlinien nicht Strecken komplett, da ich glaube, das ist nicht
optimale Gestaltung. Das design ist auch verbessert durch die Beseitigung der riesigen Räume
zwischen Label und text-Felder.