BenjieAul Geschrieben 16. November 2004 Geschrieben 16. November 2004 Hi, Ich habe ein Problem, was ich einfach nicht bewältigt bekomme. Also ich habe ein Fenster. Auf dem liegt erstmal ein Panel und darauf dann weitere 3 Panels. So nun habe ich mit dem GridBagLayout alles schön sortiert gehabt und so habe oben 2 Panels nebeneinander und unten ein großes, wo ein JTextAreaPanel druffliegt. So nun möchte ich, dass wenn der USer das Fenster nach unten zieht, sich nur unten das Panel weiter bewegt und nicht auch noch das Panel oben, da oben nur eine Anmeldemaske liegt. Wäre nett wenn ihr mir helfen könntet =) Zitieren
kingofbrain Geschrieben 16. November 2004 Geschrieben 16. November 2004 Da musst Du in den GridBagConstraints die Variable fill auf VERTICAL setzen (oder HORIZONTAL, die verwechsel ich immer ) Peter Zitieren
BenjieAul Geschrieben 16. November 2004 Autor Geschrieben 16. November 2004 das meinte ich ja nicht.Das wäre ja nur dazu da, dass sie vertikal oder horizontal ausgerichtet werden sollen. ich möchte ja aber, dass man unten am panel zieht, der größer wird, aber das darüberliegende panel nicht davon beeinflusst wird. Zitieren
Krain Geschrieben 16. November 2004 Geschrieben 16. November 2004 Warum löst du es dann nicht mit einem BorderLayout, wo deine AnmeldeMaske NORTH ist und dein JTextAreaPanel CENTER? Zitieren
BenjieAul Geschrieben 16. November 2004 Autor Geschrieben 16. November 2004 Hat mir mein Couch so befohlen. Soll das mit dem GridBagLayout machen. Zitieren
Krain Geschrieben 16. November 2004 Geschrieben 16. November 2004 Sorry - dann hab ich keine Ahnung! Aber kannst ja die Lösung mal posten falls du was findest! Ich schau mich auch mal um! Zitieren
kingofbrain Geschrieben 16. November 2004 Geschrieben 16. November 2004 In der API-Doc steht zu fill: This field is used when the component's display area is larger than the component's requested size. Und da les ich raus, dass, wenn Du Deine Komponente grösser baust (ziehst) als Dein Inhalt braucht, dass dann der Inhalt mit vergrössert wird. Und das ist es, was Du willst. Das in Verbindung mit weightx und weighty (wie soll überschüssiger Platz verteilt werden) sind Deine Freunde. Peter Zitieren
BenjieAul Geschrieben 24. November 2004 Autor Geschrieben 24. November 2004 ich will eben nicht, dass es sich mit vergrößert. Oben soll ja alles starr bleiben! Zitieren
kingofbrain Geschrieben 24. November 2004 Geschrieben 24. November 2004 So nun möchte ich, dass wenn der USer das Fenster nach unten zieht, sich nur unten das Panel weiter bewegt und nicht auch noch das Panel oben, da oben nur eine Anmeldemaske liegt. ich will eben nicht, dass es sich mit vergrößert. Oben soll ja alles starr bleiben! Also was jetzt? Die beiden oberen sollen starr bleiben, das untere sich vergrössern? Alle drei sollen starr bleiben? Erklär mal genauer, was Du willst. Peter Zitieren
kingofbrain Geschrieben 24. November 2004 Geschrieben 24. November 2004 Servus, ich habe Dir jetzt mal einen BeispielFrame gebaut, in dem drei JPanels liegen, die mit GridBagLayout gelayoutet werden. Spiel doch mal mit den Groessen weightx und weighty, anchor und fill. Beschrieben steht das in http://www.javabuch.de oder in der API-Dok. Ich kann mit diesen drei Panels machen, was ich will. Es funktioniert. Ansonsten wirst Du Dich wirklich noch ein wenig genauer erklären müssen. import java.awt.*; import javax.swing.*; public class LayoutTest { public static void main(String[] args) { JFrame frame = new JFrame("LayoutTest"); GridBagLayout layout = new GridBagLayout(); GridBagConstraints constraints; JPanel panelOne = new JPanel(); JPanel panelTwo = new JPanel(); JPanel panelThree = new JPanel(); panelOne.setBackground(Color.RED); panelTwo.setBackground(Color.BLUE); panelThree.setBackground(Color.YELLOW); constraints = new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(2, 2, 2, 2), 200, 100); layout.setConstraints(panelOne, constraints); constraints = new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.VERTICAL, new Insets(2, 2, 2, 2), 200, 100); layout.setConstraints(panelTwo, constraints); constraints = new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 200, 100); layout.setConstraints(panelThree, constraints); frame.getContentPane().add(panelOne); frame.getContentPane().add(panelTwo); frame.getContentPane().add(panelThree); frame.getContentPane().setLayout(layout); frame.pack(); frame.show(); } }[/PHP] [EDIT]Ja, ich weiss, der Code ist hässlich. Aber er läuft und war schnell geschrieben. [/EDIT] Peter Zitieren
BenjieAul Geschrieben 29. November 2004 Autor Geschrieben 29. November 2004 Bin echt froh, diese Seite gefunden zu haben. Erstmal vielen Dank für deine Bemühungen, wollte gerade den Code kompilieren, aber dabei is mir Ultra Edit flöten gegangen. Naja, ich probiere ihn dann mal morgen aus. Also nochmal zur Beschreibung. +---------------+--------------------+ | | | |Panel 1 | Panel 2 | +---------------+--------------------+ | Panel 3 | | | +------------------------------------+ Also so sieht das Ding aus. Nun möchte ich das die Panels 1 und 2 fixiert bleiben und man nur das Panel 3 nach unten ziehen kann. Verstehst du was ich meine? Wenn ich unten an dem Rand ziehe, soll nicht das Panel 1 u8nd 2 größer werden, sondern ne feste Größe haben. Muss mal gucken, ob du das in deinem Prog drinnen hast. Danke schonmal für die Mühen die du dir gemacht hast und vll. noch machst =) Mit freundlichen Grüßen Benjamin Aul Zitieren
kingofbrain Geschrieben 29. November 2004 Geschrieben 29. November 2004 So, dann zum Endspurt, Ich habe jetzt den Code soweit abgeändert, das die oberen Panels nebeneinander liegen und nur in die Breite wachsen dürfen. Sollen Sie das auch nicht, dann nimm Ihnen einfach weightx oder setze fill auf GridBagConstraints.NONE. Hier mal der Code: import java.awt.*; import javax.swing.*; public class LayoutTest { public static void main(String[] args) { JFrame frame = new JFrame("LayoutTest"); GridBagLayout layout = new GridBagLayout(); GridBagConstraints constraints; JPanel panelOne = new JPanel(); JPanel panelTwo = new JPanel(); JPanel panelThree = new JPanel(); panelOne.setBackground(Color.RED); panelTwo.setBackground(Color.BLUE); panelThree.setBackground(Color.YELLOW); constraints = new GridBagConstraints(0, 0, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 200, 100); layout.setConstraints(panelOne, constraints); constraints = new GridBagConstraints(1, 0, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 200, 100); layout.setConstraints(panelTwo, constraints); constraints = new GridBagConstraints(0, 1, 2, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 200, 100); layout.setConstraints(panelThree, constraints); frame.getContentPane().add(panelOne); frame.getContentPane().add(panelTwo); frame.getContentPane().add(panelThree); frame.getContentPane().setLayout(layout); frame.pack(); frame.show(); } }[/PHP] Peter Zitieren
BenjieAul Geschrieben 30. November 2004 Autor Geschrieben 30. November 2004 genau so wollte ich das haben=) Vielen Dank Muss mir den Code jetzt mal explizit angucken, damit cih auch sehe wie ich das jetzt bei mir noch rein machen kann. thx =) Zitieren
kingofbrain Geschrieben 30. November 2004 Geschrieben 30. November 2004 Der einzige interessante Teil dürfte der Aufruf der drei Konstruktoren von GridBagConstraints sein. Die weist Du jeweils mit der Component dem GridBagLayout zu und gut. Peter Zitieren
BenjieAul Geschrieben 1. Dezember 2004 Autor Geschrieben 1. Dezember 2004 Ja, habe mir den Code angeguckt =) Naja, werde es jetzt so ähnlich in mein Programm bauen (irgendwo zwischen die 1000 Zeilen ) Muss auch noch andere Sachen einfügen. Also nochmal vielen Dank =) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.