AWT TableLayout - FILL/FILL oder 0.5/0.5

Status
Nicht offen für weitere Antworten.

shadow

Aktives Mitglied
Hi,

Ich benutze das TableLayout (tablelayout.dev.java.net) und frage mich, was wohl der Unterschied zwischen den beiden folgenden "double sizex[] = ... " Zeilen ist:

Java:
protected static final int BORDER_WIDTH = 5;
protected static final double PREF = TableLayout.PREFERRED;
protected static final double FILL = TableLayout.FILL;

double sizex[] = { BORDER_WIDTH, PREF, 0.5,  PREF, BORDER_WIDTH, PREF, 0.5,  BORDER_WIDTH };
double sizex[] = { BORDER_WIDTH, PREF, FILL, PREF, BORDER_WIDTH, PREF, FILL, BORDER_WIDTH };

So, wie ich das verstehe, müssten die Zeilen das gleiche tun, aber es ist nicht so. Aus irgend einem Grund verhalten sich die PREF-Spalten in beiden Varianten unterschiedlich, aber ich verstehe nicht, warum?

Kann mir da irgendjemand weiterhelfen?

Vielen Dank!
Stefan
 
Zuletzt bearbeitet von einem Moderator:

Marco13

Top Contributor
Hab's jetzt zwar nicht nachvollzgen, aber ... das 0.5 bedeutet ja (wenn ich das richtig überflogen habe) 50% der Gesamtbreite ... wenn das in einer Zeile 2 mal vorkommt, bleibt für den Rest ja nichts mehr übrig ... ???:L
 

SebiB90

Top Contributor
Hab's jetzt zwar nicht nachvollzgen, aber ... das 0.5 bedeutet ja (wenn ich das richtig überflogen habe) 50% der Gesamtbreite ... wenn das in einer Zeile 2 mal vorkommt, bleibt für den Rest ja nichts mehr übrig ... ???:L
Jop, so siehts eigentlich aus.
Mit 0.5 sagt man 50% der Gesamtbreite(bzw -höhe, je nachdem für was man es angibt). Mit Fill sagst du, dass die Komponente die ganze restliche breite ausfüllen sollen. Sollte es mehrere Fills geben, sollten diese sich die breite gleichmäßig aufteilen, wenn ich mich nicht irre.
 

shadow

Aktives Mitglied
Hi, danke für die Antworten!


Auszug aus dem TableLayout Tutorial:

--------------------------
The total width of a container is first allocated to absolute columns and preferred columns. The remaining width, the scalable width, is then allocated to the scalable columns. If the sum of the scalable columns is less than 100%, there will be some scalable width left over. This scalable width is then divided equally among all the fill columns. Consider the following sizes.

Java:
        double size[][] =
            {{100, 0.50, 0.20, TableLayout.FILL, 200, TableLayout.FILL},
             {TableLayout.FILL};


Let's say the container is 500 pixels wide. The column widths will be
Column 0 100 pixels
Column 1 100 pixels
Column 2 40 pixels
Column 3 30 pixels
Column 4 200 pixels
Column 5 30 pixels

The total width is 500 pixels. The absolute width is 300 pixels. The scalable width is 200 pixels. The scalable columns add up to 70% leaving 30% to be divided between two fill columns each getting 15%.

------------------------

Die Prozentangaben beziehen sich IMO immer auf den skalierbaren Teil... deswegen versteh ich nicht so richtig, wo eben der Unterschied aus meinem ersten Post sein soll?

Oder steh ich auf dem Schlauch? *einen_schritt_zur_seite_geh* :)

MfG!
 

Marco13

Top Contributor
Hmja, so wie das da steht, müßtest du eigentlich Recht haben. Man müßte sich mal ein Beispiel basteln, wo man den Unterschied zwischen beiden Versionen sieht ... *pfeif*
 

shadow

Aktives Mitglied
In meinem ersten Post ist pref dabei.
Pref liest aus dem Component die Eigenschaft "preferredSize" aus ( getPreferredSize() )...

Das dürfte sich IMO zwischen meiner ersten und zweiten Definition nicht unterscheiden. Zumindest wüsste ich nicht, warum?
 

SebiB90

Top Contributor
In meinem ersten Post ist pref dabei.
Pref liest aus dem Component die Eigenschaft "preferredSize" aus ( getPreferredSize() )...

Das dürfte sich IMO zwischen meiner ersten und zweiten Definition nicht unterscheiden. Zumindest wüsste ich nicht, warum?

die Frage ist halt, an welcher Stelle Pref angewendet wird, ob vor oder nach den 50%. Das würde nen Unterschied machen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben