JFrame

SirWayne

Erfahrenes Mitglied
Hallo,

ich haben ein JFrame (1024 * 768) wenn ich dieses JFrame starte und selber kleiner ziehe ,welche Methode wird dann ausgeführt?
Und kann man auf ein JFrame eine ScrollPane adden?Da wenn ich das JFrame kleiner mache ich jedes mal meine Panles anpassen muss... Mit einer Scrollpane wäre alles dynamischDanke :)
 
Hallo,
ich haben ein JFrame (1024 * 768) wenn ich dieses JFrame starte und selber kleiner ziehe ,welche Methode wird dann ausgeführt?
ComponentListener.componentResized(ComponentEvent e)

Und kann man auf ein JFrame eine ScrollPane adden?Da wenn ich das JFrame kleiner mache ich jedes mal meine Panles anpassen muss... Mit einer Scrollpane wäre alles dynamischDanke :)

Nutze einen LayoutManager. Diese sind nämlich u.a. genau für sowas gedacht:
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/LayoutManager.html
http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html


*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Danke das 1. hat funktioniert.
Meine Layouts sind alle null und ich hab die Location meiner Componenten alle selber gesetzt... Wenn ich mein Frame beliebig klein ziehe werden meine Komponenten einfach ausgeblendet(was ja logisch ist) aber wenn ich eine Scrollpane habe müsste ich diesen effekt ja umgehen können... wenn ich meine Felder jedes mal neu berechne und mit dem manager dynamisch mache hängen sie irgendwann alle mal aufeinander drauf
 
Hallo,

du könntest in deinem JFrame einen anderen LayoutManager wählen (z.b. BorderLayout, GridLayout). Deine Ganzen Elemente packst du in ein JPanel, genau so wie du es gerade auf im JFrame machst. Dieses JLabel fügst du dann der ScrollPane hinzu. So müsste es funktionieren ohne Berechnungen.

Mir stellt sich aber eine Frage. Warum willst du es so komliziert machen, wenn es mit LayoutManager wesentlich einfacher geht

MFG

zEriX
 
warum sollte es mit dem LayoutManager leichter gehen?
ja ich nehm mein JFrame mit einem BorderLayout und versuch es mal damit
mein problem besteht ja nur darin dass wenn ich mein frame kleiner mache(per hand) das dann meine feler weg sind, da kann mir der layoutmanager auch nicht weiterhelfen oder ich hab was falsch verstanden:confused:
 
Naja, ein Layout-Manager passt die Größer deiner Komponenten dynamisch an. Natürlich kannst du festlegen was wie angepasst werden soll (Höhe, Breite, überhaupt, je nach Layoutmanager), aber es besteht beispielsweise die Möglichkeit einen Button immer so groß wie das Frame zu machen, egal wie groß es ist (ist jetzt ein schlechtes Beispiel). Und natürlich brauchst du auch weiterhin ein JScrollPane, falls du das Fenster so klein machst, dass deine Komponenten auch mit minimaler Größe nicht mehr reinpassen.
 
Wenn was auf den Pixel genau positionieren möchtest, dann solltest du das Null-Layout wählen, aber nur für die Komponente auf der sich die anderen Komponenten befinden und nicht für alles. Wenn du alles komplett mit dem Null-Layout machen willst, hast du die Probleme die du jetzt hast.

Wenn du jetzt alle Elemente positioniert hast und jemand zieht das Fenster größer, dann bleiben deine Elemente wo sie sind und das kann auch sehr blöd aussehen, besonders wenn das Fenster viel größer gezogen wird.

Bei einem LayoutManager hast du diese Probleme nicht, weil sich da alles neu anpasst und die Größe neu zugordnet wird. Mit setMinimumSize, setMaximumSize und setPreferedSize kannst du bestimmen wie klein ein , wie groß es maximal und wie groß es normal ist(falls möglich) ein Element sein darf.

MFG
zEriX
 
mhm ja dasist mir bewusst dass ich meine Komponeten so groß machen kann wie mein frame egal wie groß es istaber soviel ich weiß kann ich doch nur setPreferredSize und setMinSize eingeben!dadurch ist es dynamisch ...ok aber wie gesagt wenn mein frame irgendwann zu klein ist sollte ich scrollen können... leider klappt das nicht
 
also ich hab ein Borderlayout verwendet was mein Problem nicht gelöst hat ,wenn ich mein frame kleine ziehe werden die irgendwann nimmer angezeigt...eigentlich sollte es so funktionieren wie beim inet explorer wenn man oben auf die leiste doppelt klickt wird das fesnter kleiner und wird schön mit 2 scrollpans angezeigt
 
Zurück