Swing GUI Element wird nicht skaliert

kossy

Bekanntes Mitglied
Hallo !

im Anhang habe ich ein Bild gepostet. Dort sieht man ein JPanel (in der der farbe Orange) und eine JList mit etwas Inhalt.

Ich habe meine gesamte GUI mit dem Grouplayout bestaltet. Hier wird das JPanel genau in der Größe dargestellt, wie ich es auch haben wolllte. Das jPanel beinhaltet nun eine JList.

Diese JList wird aber nicht voll gezeichnet, wie das JPanel, sondern anscheinend immer abhängig von der Menge von Inhalte (für die Höhe), die sie enthält, und der Länge der dargestellten Inhalte (für die Breite).

Wie kann ich das Problem lösen? Ich habe bereits ein wenig mit der "setSize()" Methode der JList herumgespielt, aber es geschieht nichts.

Wenn ihr zwingend Code sehen müsst, dann stelle ich diesen hier gerne noch zur Verfügung.

Danke und Gruß
Kossy
 

Anhänge

  • panel_jlist.jpg
    panel_jlist.jpg
    29,4 KB · Aufrufe: 39
Grouplayout eignet sich nicht unbeding zum "fitten" von Components.

Versuch es mal mit GridbagLayout und dann fillHorizontal / Vertical.

Ansonsten sollte man hier mit der preferedSize () arbeiten.

Gruß,
Martin
 
Und wenn du hier sagst GroupLayout, dann meinst du ich hab keine Ahnung von Layouts und habs mit dem GUI-Builder gebaut. Ohne Wissen über Layoutmanager kannst du das GUI basteln vergessen, da kommt nichts gescheites dabei raus. Guck in die FAQ, da gibts zu jedem Layoutmanager ein Tutorial.
 
Ich habe Gridbag vorgeschlagen, weil ich davon ausgehe, dass man hier noch mehr Components rein setzen will..

Ansonsten kann man einfach CardLayout nehmen.

Gruß,

Martin
 
Hallo nochmal,

ich habe das Problem jetzt lösen können. Ich habe nachwievor mit dem GroupLayout gearbeitet (für die gesamte GUI). Das einzige, was ich jetzt angepasst habe, ist, dass mein JPanel zusätzlich ein BorderLayout beinhaltet und in das JPanel meine JList hineingepackt wird. Als Ausrichtung für das BorderLayout des JPanels nutze ich ausschließlich die Eigenschaft "CENTER".

Nun wird die JList endlich voll gerendert und entsprechend auf der GUI dargestellt. Eine Frage hab eich aber noch einmal zu dem Thema im Allgemeinen, da ich in Java Swing noch nciht so viele Erfahrungen besitze:

Dem GroupLayout Manager mache ich jetzt nur dieses JPanel bekannt und damit funktioniert es wie gesagt. Nutze ich jetzt aber kein JPanel und mache dem LayoutManager direkt die JList bekannt, dann wird sie eben so merkwürdig abgeschnitten und sämtliche "setBounds" und "setSize" Eigenschaften werden vollständig verworfen.

Warum ist das so? Weiß das vieleicht jemand?

Und macht es generell überhaupt Sinn "setBounds" und "setSize" Eigenschaften für GUI Objekte zu definieren, wenn ich eh mit einem Layoutmanager arbeite, oder werden die Eigenschaften dadurch absolet?

Danke und Gruß
Kossy
 
Zuletzt bearbeitet:
Nein das macht keinen Sinn, weil Layoutmanager genau dafür da sind, diese setBound und setSize aufrufe für dich zu erledigen. GroupLayout ist da sehr konsequent, alles was man nicht nach dem GroupLayout schema konfiguriert wird beim layouten ignoriert.
Layoutmanager muss man erst mal konfigurieren lernen, wenn man das kann ersparen sie einem aber eine Menge arbeit. Ohne Layout sehen Guis extrem hässlich aus, spätestens wenn man die Fenstergröße oder die standard Schriftgröße ändert. Das schöne an Layoutmanagern ist, dass sie dynamisch berechnen, wie GUI elemente platziert werden müssen.
Ich sah mal einen Code, da versuchte einer ohne Layoutmanager auf Größenänderungen zu reagieren. Der Code in seinen ComponentListenern war nicht mal von einem großen GroupLayout code an unübersichtlichkeit zu übertreffen.
 

Neue Themen


Zurück
Oben