NullLayout verwenden, oder nicht?

teslar

Aktives Mitglied
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 🙁
 
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.
 
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.
 
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.
 
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.
 
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...)
 
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.
Hard to get right in the first place
Exactly how do you get these coordinates?
System dependent
The components have different sizes in different systems. I once wrote a Java program that I proudly showed to an important colleague, who unfortunately was using a different system. The layout looked really, really bad - gaps, overlaps. What happened? Null layout! It was one of my early programs and the last null layout I ever wrote.
Java version dependent
A little know fact is that between Java versions the rendering of components something changes slightly. It's not big, but if you have things carefully aligned in null layouts, they may not be in the next version of Java.
User setting dependent
Another little used feature is that the user can actually change Java's default settings for fonts etc. I once decided I wanted larger fonts on the high resolution screen I had. Of course, this completely breaks any null layouts altho regular layouts will adjust properly.
Not resizeable
It's not uncommon to have text fields/areas that the use might want to make larger by dragging the lower right corner of the window. Impossible with null layouts, automatic 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.
 
Zuletzt bearbeitet:
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.
 

Zurück
Oben