Zum Inhalt springen

Java GUI LayoutManager


schnixx

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen


	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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...