2016-05-20 13 views
0

glaube, ich habe ein JPanel mit einem GridBagLayout wie folgt aus:GridBagLayout Gewichte und Overlapping Komponenten

----------------------------------------------- 
|  |    |    |  | 
|  |Left JLabel 1 | Right JLabel 1|  | 
|  |    |    |  | 
|-glue-|Left JLabel 2 | Right JLabel 2|-glue-| 
|  |    |    |  | 
|  |   Bottom JLabel   |  | 
|  |    |    |  | 
|    vertical glue    | 
----------------------------------------------- 

Die Links/Rechts-Etiketten jeder Spanne 1 Zeile und 1-Säule, während die untere Etikett 1 Zeile und 2 Spalten erstreckt. Die horizontalen Klebstoffe auf beiden Seiten überspannen 3 Reihen und 1 Spalte. Der vertikale Klebstoff am unteren Ende umfasst 1 Reihe und 4 Spalten.

Jedes der Etiketten hat eine weighty von 1.0. Ferner weisen die beidseitig klebenden Kleber auch eine weighty1.0 auf. Der vertikale Kleber hat eine weighty von 1.5. Derzeit, wenn ich die Größe des Panels in der y -Ihrichtung ändere, bekommt der vertikale Kleber ungefähr 3/5 des verfügbaren Platzes und der gesamte obere Teil bekommt ungefähr 2/5 des verfügbaren Platzes.

Meine Frage ist, wie funktioniert die Gewichtung, wenn der Kleber überlappt (wenn aus der Perspektive y-Größe betrachtet) mit den Tasten? Ohne den Kleber wäre das Gesamtgewicht der Knöpfe 3.0 gewesen: das ist ein völlig anderes Größenänderungsszenario! Wie wird das Gewicht tatsächlich berechnet (am höchsten, durchschnittlich, 'aus einer Größenänderungsperspektive gesehen',?) Und verwendet?

Antwort

2

Nun, die Berechnung ist ziemlich komplex, also wer genau weiß, was passiert.

Ich würde vermuten, Sie bekommen so etwas wie:

  1. Der „vertikale Klebstoff“ eine Reihe von Daten in Betracht gezogen wird, so dass es 1,5 erhält.
  2. Die "Kleber" -Komponenten sind eine andere Reihe von Daten, so dass sie 1,0 erhalten.
  3. Dann haben Sie innerhalb der "Leim" -Komponenten 3 weitere Reihen von Daten und sie erhalten jeweils .33 des Raums, der den "Leim" -Komponenten zugeordnet ist.
+0

Vielen Dank für die Beantwortung meiner Frage, aber "wer genau weiß, was passiert": Wer tut, tatsächlich? Gibt es Java-Entwickler auf SO? :) Auch das Beispiel, das ich in meiner Frage gegeben habe, ist ziemlich einfach, aber was, wenn der Kleber und die Knöpfe sich nur teilweise überschneiden? Was passiert, wenn mehrere Spalten unterschiedliche Überschneidungen aufweisen? – shardulc

+0

'aber was ist, wenn der Kleber und die Knöpfe sich nur teilweise überlappen? '- dann würde es noch komplizierter werden. Ich empfehle immer, verschachtelte Panels mit dem entsprechenden Layout-Manager zu verwenden, anstatt zu versuchen, ein Layout mit einem einzelnen Layout-Manager zu erzwingen. – camickr