Swing Neue Swing LayoutManager: TOnion Projekt

Bitte aktiviere JavaScript!
Hallo,

hier möchte ich gerne zwei neue LayoutManager für Swing vorstellen:
TotemLayoutManager und
TrainLayoutManager

Beide arbeiten zusammen und werden ineinander geschachtelt wie die Häute einer Zwiebel. Deshalb heißt das Layout "TOnion" (beide beginnen mit T).

Die Layoutmanager können heruntergeladen werden unter:

https://java.net/projects/tonion/downloads

Totem- und TrainLayoutManager sind für große Dateneingabemasken und Formulare gedacht.

Bitte Fragen und Anmerkungen auf java.net posten, damit alles zu dem Projekt an einem Ort ist.

TotemLayoutManager ordnet Objekte senkrecht an und gibt allen die gleiche Breite, TrainLayoutManager ordnet Objekte waagerecht an und gibt allen die gleiche Höhe.
Es müssen die Minimum und Maximum Größen der innersten Objekte angegeben werden.
Das gesamte TOnion Layout minimiert und maximiert je nach dem vorhandenen Platz.

TOnion Layout kann in ein JScrollPane gepackt werden. Erst wenn TOnion Layout ganz minimiert ist, werden die Scrollbalken sichtbar.
JButtons in ein JPanel kapseln mit FlowLayout.
JTables in ein JPanel kapseln mit BorderLayout, zum Center hinzufügen.

Viel Spaß !
Birke :)
 
Hallo Runzmanz,
das sind zwei ganze Klassen jede ca. 470 Zeilen lang :)
Du kannst den Code bei dem oben angegebenen Link runterladen.
Bild: Ich bin noch dabei die Formulare aufzubauen und habe zur Zeit keine Zeit dazu. => selber ausprobieren :)

Hallo Joose,
bei Datenmasken und Formularen ist es schön, wenn
+ die einzelnen Teile sich gut ausrichten
+ sich die Datenmaske auf die Größe des Fensters/Bildschirms einstellt
+ kein Eingabe/Ausgabe Feld zu groß oder klein wird

Mann kann das durch schachteln von FlowLayout, BorderLayout und GridLayout erreichen. ABER man muss zum Teil dann sehr viele JPanels mit BorderLayout ineinander schachteln, um Felder senkrecht mit gleicher Breite aber unterschiedlicher Höhe oder waagerecht mit gleicher Höhe aber unterschiedlicher Breite anzuordnen. Der eigene Code wird dann unübersichtlich und schwer zu warten.
Man kann auch BoxLayout verwenden, aber wenn man die Größe der Felder festlegen will, dann passt sich das Layout nicht mehr der Größe des Fensters an.
 
Hallo,
Neuigkeiten, der experimentelle Status ist verlassen und TrainLayout 1.0 und TotemLayout 1.0 sind ab heute unter dem oben angegebenen Link herunterzuladen.

Ich hänge Bilder als Beispiel an.

Das nächste Ziel ist es, die Performance von TOnionLayout zu verbessern, es also schneller zu machen. Habe schon eine Idee, wenn ich mal wieder Zeit habe mache ich mich dran. Also, bleibt auf dem Laufenden. :)
 

Anhänge

Zuletzt bearbeitet:
Die Screenshots sind schön und gut ... mehr interessieren würde mich aber ein Codevergleich!
Das was auf den Screenshots zu sehen ist kann ich mit anderen Layouts auch bauen. Angeblich muss man mit euren weniger Panels verschachteln etc.
 
Hallo Joose,

ich freue mich über Dein Interesse. Laß uns die Arbeit des Codevergleichs teilen. Du sagst ja, Du kannst das Layout samt Verhalten mit anderen Mitteln nachbauen. Poste den Code Deines Nachbaus und dann poste ich meinen Code, dann können wir vergleichen.
Der Grund warum ich meine neuen LayoutManager der Öffentlichkeit vorstelle, ist ja, dass ich andere Menschen suche, mit denen man zusammen interessante Java Projekte machen kann.

Beste Grüße,
Birke
 
Hallo,

NEU TOnionLayout 2.0 ist veröffentlicht. Damit ist das Projekt fertig. Bitte Bugs und Kommentare posten.

Die Minimum- und Maximum-Größen werden jetzt intern gespeichert, so dass die Performance besser ist, als bei Version 1.0.

Ohne Angabe der Größen, wird der Platz gleichmäßig aufgeteilt.

Hier ein paar Zeilen Beispielcode (Ausschitt aus einem größeren Layout). Eine Spalte, die mehrere Zeilen enthält:

Java:
		private JPanel macheSpalteDetails()
		{
			JPanel feld = new JPanel();
			feld.setLayout(new TotemLayout(feld, 7));
			//
			feld.add( macheZeileFirma());
			feld.add(macheZeileAdresse());
			feld.add(macheZeileAnsprechpartnerin());
			feld.add(macheZeileKontakt());
			feld.add(macheZeileInfo());
			feld.add(macheZeileDatenbank());
			//
			return feld;
		}
Java:
		private JPanel macheZeileAdresse()
		{
			JPanel feld = new JPanel();
			feld.setLayout(new TrainLayout(feld));
			//
			strasse = new JTextField();
			strasse.setBorder(BorderFactory.createTitledBorder("Straße"));
			strasse.setMinimumSize(new Dimension(160,40));
			strasse.setMaximumSize(new Dimension(330,40));
			feld.add(strasse);
			//
			hausnummer = new JTextField();
			hausnummer.setBorder(BorderFactory.createTitledBorder("Nr."));
			hausnummer.setMinimumSize(new Dimension(50,40));
			hausnummer.setMaximumSize(new Dimension(90,40));
			feld.add(hausnummer);
			//
			postleitzahl = new JTextField();
			postleitzahl.setBorder(BorderFactory.createTitledBorder("PLZ"));
			postleitzahl.setMinimumSize(new Dimension(50,40));
			postleitzahl.setMaximumSize(new Dimension(90,40));
			feld.add(postleitzahl);
			//
			stadt = new JTextField();
			stadt.setBorder(BorderFactory.createTitledBorder("Stadt"));
			stadt.setMinimumSize(new Dimension(160,40));
			stadt.setMaximumSize(new Dimension(335,40));
			feld.add(stadt);
			//
			land = new JTextField("Deutschland");
			land.setBorder(BorderFactory.createTitledBorder("Land"));
			land.setMinimumSize(new Dimension(100,40));
			land.setMaximumSize(new Dimension(160,40));
			feld.add(land);
			//
			return feld;
		}
Verbessert wurde auch die Ausgabe auf Konsole der Testklassen:
TrainLayoutTest und TotemLayoutTest

Die Minimum- und Maximum-Größen brauchen nur ungefähr zueinander passen. Falls es Fehler gibt, falls also eine Minimum-Größe größer ist als die erlaubte Maximum-Größe, so werden die Fehler automatisch korrigiert mit Maximum = Minimum. Bei den Testklassen werden die Fehler auf der Konsole ausgegeben.

Alles Gute.
 
Zuletzt bearbeitet:
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben