schnixx Geschrieben 28. Februar 2012 Teilen Geschrieben 28. Februar 2012 Hallo zusammen, ich bin gerade dabei mich in java einzuarbeiten und versuche eine GUI zu erstellen. ich nutze das borderlayout. jetzt möchte ich innerhalb des centers zwei checkboxen ertellen. ist das möglich, oder kann ich immer nur eine komponente pro richtung einfügen? Womöglich müsste ich das borderlayout.center mit einem flowlayout verschachteln, allerdings verstehe ich nicht wie das funktioniert. Weiterhin stellt sich mir die Frage, ob es möglich ist, die Größe der verschiedenen Bereiche des borderlayouts zu verändern? Bitte um Hilfe. Danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 29. Februar 2012 Teilen Geschrieben 29. Februar 2012 jedes Panel hat genau einen LayoutManager, der bestimmt, wie die Komponenten anzuordnen sind (das Fenster beinhaltet selbst ein Panel, welches in deinem Fall das BorderLayout besitzt) wenn du in der Mitte mehr als eine Komponente haben möchtest, die nicht den gesamten Inhalt füllt, dann willst du eigentlich, dass ein Container (JPanel) dort die weiteren Elemente aufnimmt und anders anordnet (du solltest dir diesbezüglich, sofern noch nicht geschehen, die anderen LayoutManager anschauen) diesem kannst du dann das FlowLayout zuweisen bei einem Borderlayout kann man die Größe der Elemente kaum beeinflussen das mittlere Element nimmt immer den restlichen zur Verfügung stehenden Platz, abzüglich der festlegbaren Abstände das obere und untere Element verwendet immer die gesamte Breite und das rechte und linke Element verwendet immer die (abzüglich der Höhe des oberen und unteren Elements) restliche Höhe, abzüglich der Abstände ansonsten sind die Elemente am Rand frei in iherer Höhe bzw. Breite Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnixx Geschrieben 29. Februar 2012 Autor Teilen Geschrieben 29. Februar 2012 Ist es dann nicht sinnvoller, wenn ich ohne LayoutManager arbeite? Immerhin muss ich die verschiedenen Komponenten unterschiedlichen groß gestalten und im BorderLayout werden die Komponenten ja immer so angelegt, dass sie exakt so groß sind wie die "Himmelsrichtung". Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 29. Februar 2012 Teilen Geschrieben 29. Februar 2012 Nein! Wenn du ein Null-Layout verwendest, musst du dich selber um das Positionieren und Skalieren deiner Komponenten kümmern. Die API bietet auch Methoden zum setzen von minimalen und maximalen Höhen und Breiten an! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 29. Februar 2012 Teilen Geschrieben 29. Februar 2012 theoretischerweise ist es möglich, sich seinen eigenen LayoutManager zu schreiben, allerdings dürfte dies ausreichend schwierig sein, sodass in fast jedem Fall das geschickte Kombinieren der vorhandenen LayoutManager ausreicht du solltest dir auch mal GUI-Builder ansehen in NetBeans ist ein meines Erachtens nach gut zu verwendender integriert, in neueren Eclipse-Versionen kann man diesen über ein Plugin nachinstallieren (in älteren war dieser ebenfalls integriert) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnixx Geschrieben 29. Februar 2012 Autor Teilen Geschrieben 29. Februar 2012 public JPanel buildOptionPanel() { JPanel OptionPanel = new JPanel (new GridLayout(20,1)); // OptionPanel.setLayout(new GridLayout()); OptionPanel.add(checkBox1); OptionPanel.add(checkBox2); OptionPanel.setBorder(BorderFactory.createTitledBorder("Transaction")); JPanel OptionPanel2 = new JPanel (new FlowLayout()); // OptionPanel.setLayout(new GridLayout()); OptionPanel2.add(checkBox1); OptionPanel2.add(checkBox2); OptionPanel2.setBorder(BorderFactory.createTitledBorder("Accounts")); OptionPanel.add(OptionPanel2); //OptionPanel.setBorder(BorderFactory.createTitledBorder("Transaction")); return OptionPanel; } public JFrame createFrame() { frame.add(buildOptionPanel(),BorderLayout.CENTER ); } Warum liegen die beiden Panel (Transaction und Accounts) übereinander? Ich würde diese gern nebeneinander anordnen! Bitte um Hilfe. DANKE. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 29. Februar 2012 Teilen Geschrieben 29. Februar 2012 du fügst dem OptionPanel ("Transaction") das OptionPanel2 ("Accounts") hinzu dadurch wird das OptionPanel2 in dem OptionPanel dargestellt willst du sie nebeneinander haben, dann benötigst du ein JPanel, welches diese beiden aufnimmt (dem du also die beiden Komponenten zuweist) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnixx Geschrieben 29. Februar 2012 Autor Teilen Geschrieben 29. Februar 2012 Okay. Inwieweit müsste ich meinen Code dann anpassen? Habe schon x-Versuche ausprobiert aber irgendwie funktioniert die Anordnung nebeneinander nicht. Wenn ich nur ein Panel nutze, besitzt dieser auch nur einen Title. Ich benötige einen Panel mit einer Unterteilung in Account und Transaction, die wiederum eine Auflistung von CheckBoxen besitzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 29. Februar 2012 Teilen Geschrieben 29. Februar 2012 probier folgendes: lege ein JPanel mit dem Namen containerPanel an weise dem containerPanel einen FlowLayout-LayoutManager zu lege ein JPanel mit dem Namen transactionPanel an gibt dem transactionPanel seinen Rahmen gib dem transactionPanel seinen LayoutManager gib dem transactionPanel seine untergeordneten Komponenten (die Checkboxen) füge dem containerPanel das transactionPanel hinzu lege ein JPanel mit dem Namen accountPanel an gibt dem accountPanel seinen Rahmen gib dem accountPanel seinen LayoutManager gib dem accountPanel seine untergeordneten Komponenten (die Checkboxen) füge dem containerPanel das accountPanel hinzu so dürfte das dann funlktionieren Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnixx Geschrieben 29. Februar 2012 Autor Teilen Geschrieben 29. Februar 2012 Super, danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnixx Geschrieben 29. Februar 2012 Autor Teilen Geschrieben 29. Februar 2012 Ich möchte nun aber die Panel unterschiedlichen groß gestalten (also die Border von Account und Transaction sollen unterschiedlich groß sein), da ich nur 3 Accounts habe und dagegen mehr als 20 Transactions. Über setSize funktioniert die Veränderung der Panels nicht wirklich?! Tip oder andere Möglichkeiten? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnixx Geschrieben 1. März 2012 Autor Teilen Geschrieben 1. März 2012 Hat niemand eine Idee wie ich im Center zwei unterschiedliche große Panels einrichte bzw. generell Panelgröße im Centerbereich anpasse? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 1. März 2012 Teilen Geschrieben 1. März 2012 du solltest dich mit den verschiedenen LayoutManagern, die von Hause aus mitgebracht werden, auseinander setzen so dürftest du dir dann deine Fragen selbst beantworten können und musst nicht für jede mögliche Situation erneut nachfragen, wie man dies denn umsetzen könnte Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnixx Geschrieben 1. März 2012 Autor Teilen Geschrieben 1. März 2012 Ja ich vermute das ich dies mit dem GridBagLayout machen muss, allerdings erscheint mir dies als ziemlich kompliziert. Andere Möglichkeiten gibt es nicht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 1. März 2012 Teilen Geschrieben 1. März 2012 Für weitere LayoutManager schau dir mal JGoodies :: Downloads :: Libraries an. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.