# NullLayout verwenden, oder nicht?



## teslar (18. Dez 2011)

hi,

in einem thread wurde mir geraten, mein layout nicht null zu setzen.

ich möchte ein GUI machen, bei dem ich alles genau setzen möchte, allerdings bieten die tutorials, die ich finde, nicht den einblick, den ich dafür benötige, ich sehe ein, das die layouts bei einigen oberflächen helfen, aber mir helfen sie nicht.

deswegen überlege ich, doch mein layout nul zu setzen.

also wenn ihr irgentwelche guten tutoriale habt oder mir sagen könnt, welches layout für eine genaue platzierung gut ist, dann anwortet mir bitte.

bitte helft mir


----------



## Gast2 (18. Dez 2011)

> ich möchte ein GUI machen, bei dem ich alles genau setzen möchte


Dann ist das einer der wenigen (der einzige?) Fälle für das null Layout.


----------



## teslar (18. Dez 2011)

ok danke, war iriitiert weil alle mir sagten das ich das nie machen soll


----------



## Fab1 (18. Dez 2011)

Sag niemals nie, aber wie EikeB schon sagte, gibt es fast nichts, was sich nicht auch mit Layoutmanagern realisieren liese, diese erfordern allerdings viel Übung und auch Nerven. 

Wenn man es allerdings mal kann, dann spart man sich dadurch viel Zeit.


----------



## bygones (18. Dez 2011)

ich wage zu behaupten dass selbst dann GridBagLayout und seine Ableger IMMER die bessere Wahl sind als das null layout. 
Je nach dem ob man lust hat alles selbst zu machen bzw sich nicht zu wundern warum es bei anderen anders aussieht, sich nicht einfach resizen laesst oder man beim scrollen probleme bekommt etc etc.

Wer sich gut genug damit auskennt und zeit/nerven hat sich um ein sinnvolles null layout zu kuemmern - klar gerne.


----------



## Gast2 (18. Dez 2011)

Naja, wenn man wirklich alle Komponenten absolut platzieren will (warum auch immer..) dann möchte man sicherlich nicht dass die sich beim resizen verschieben. Und dann macht das null layout imho auch sinn.


----------



## Camino (18. Dez 2011)

Hmm, ich hab in meiner Swing-Anwendung mehrere grössere Formularpanel, bei denen sich eigentlich bei der Grösse der Komponenten nichts mehr ändern oder verschieben soll. Wenn sich an der Framegrösse was ändert und das Formular nicht mehr reinpasst, kommen eben Scrollbalken ins Spiel. Ich hab das von Anfang an mit dem GridBagLayout umgesetzt. Vielleicht auch deswegen, weil immer vom Null-Layout abgeraten wird. Vom Aufwand her finde ich das auch nicht viel schlimmer. Da hab ich jedenfalls wenigstens mal das GridBagLayout besser kennengelernt.

Ich bin mich nun aber doch öfters am fragen, ob dafür das Null-Layout nicht doch geeigneter wäre und ich das irgendwann mal umschreiben sollte. Würde vom Aussehen her jedenfalls keinen grossen Unterschied machen.


----------



## Marco13 (18. Dez 2011)

Warum willst du "alles ganz genau setzen" (und was heißt das?). Die Größen einzelner Components kann man mit setPreferredSize meistens ganz gut festlegen, und es gibt nur SEHR wenige Fälle, wo man die Größen aller Components Pixelgenau setzen will. (Mir würde spontan keiner einfallen...)


----------



## bERt0r (18. Dez 2011)

Mir fällt kein einziger Anwendungsfall ein, bei dem es Sinn machen würde keinen Layoutmanager zu verwenden.
Scrollbalken etc... Was ist wenn dein Programm auf einem Rechner gestartet wird, wo die Schriftgrößen standardmäßig vergrößert wurden (es gibt Menschen mit Sehbehinderungen).

Ausserdem: Java: Null Layout is Evil


> Problems with null layout that regular layouts don't have
> 
> Difficult to change, therefore hard (expensive) to maintain
> Moving, adding, removing, etc require a lot of recalculation. Relatively little work is required with regular layouts.
> ...



Wenn du wirklich alles selber einstellen willst, schreib dir einen eigenen Layoutmanager. Es gibt dazu ein Tutorial in den FAQ. Null Layout ist eigentlich ein falscher Begriff, es impliziert dass das Null Layout ein Layoutmanager wäre. In wirklichkeit pfeiffst du aber auf einen wichtigen Teil bei der erstellung deiner GUI.


----------



## Camino (18. Dez 2011)

bERt0r hat gesagt.:


> Was ist wenn dein Programm auf einem Rechner gestartet wird, wo die Schriftgrößen standardmäßig vergrößert wurden (es gibt Menschen mit Sehbehinderungen).



Oh je, an so etwas hab ich ja noch garnicht gedacht. Da bleibe ich doch wohl lieber bei meinem GridBagLayout. Muss ich aber trotzdem mal testen, wie das dann aussieht. Danke für den Hinweis.


----------

