Swing Neue Swing LayoutManager: TOnion Projekt

Birke

Mitglied
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 :)
 

Birke

Mitglied
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.
 

Birke

Mitglied
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

  • TOnionLayout1.jpg
    TOnionLayout1.jpg
    94,2 KB · Aufrufe: 101
  • TOnionLayout2.jpg
    TOnionLayout2.jpg
    87,2 KB · Aufrufe: 77
  • TOnionLayout3.jpg
    TOnionLayout3.jpg
    81,1 KB · Aufrufe: 85
  • TOnionLayout4.jpg
    TOnionLayout4.jpg
    100,8 KB · Aufrufe: 87
Zuletzt bearbeitet:

Joose

Top Contributor
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.
 

Birke

Mitglied
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
 

Birke

Mitglied
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:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S [Swing] Wie zeichne ich neue Linien AWT, Swing, JavaFX & SWT 3
D JLabel o.a. im Swing Fenster löschen um neue JL. zu zeigen AWT, Swing, JavaFX & SWT 4
I JLabel neue Zeile AWT, Swing, JavaFX & SWT 4
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
boscho87 JavaFX Variabeln an neue Scene übergeben AWT, Swing, JavaFX & SWT 0
D JLabel bei Aufruf neue Zeile AWT, Swing, JavaFX & SWT 5
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
M Swing JFreechart zoom x-achse neue Werte AWT, Swing, JavaFX & SWT 4
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
J JavaFX Variable an neue Scene übergeben AWT, Swing, JavaFX & SWT 8
S JTable nach aktualisierung - neue Zeile nicht "klickbar" AWT, Swing, JavaFX & SWT 0
S Oracle's neue Sicherheitseinstellungen zerstoeren mein Applet. Was tun? AWT, Swing, JavaFX & SWT 3
P Neue Datei erstellen in JPanel AWT, Swing, JavaFX & SWT 5
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
C Neue Benutzeroberfläche einfügen? AWT, Swing, JavaFX & SWT 12
C Swing Fensterresize durch doppelklick - wie die neue Grösse erhalten? AWT, Swing, JavaFX & SWT 3
E JFreeChart in einer dynamischen Aufzeichnung neue Serien hinzufügen? AWT, Swing, JavaFX & SWT 7
K Buttons und neue Fenster AWT, Swing, JavaFX & SWT 9
V Swing Neue Größe bei ComponentListener noch nicht verfügbar? AWT, Swing, JavaFX & SWT 3
Meldanor Swing JTable - Eine neue Zeile vor einer bestehenden Einfügen AWT, Swing, JavaFX & SWT 2
P 2D-Grafik Neue Farbe für einen Teilbereich einer Linie? AWT, Swing, JavaFX & SWT 8
C Swing JLabels entfernen und neue einfügen AWT, Swing, JavaFX & SWT 6
J Swing JList: Neue Zeilen mit fireIntervalAdded sind automatisch selektiert AWT, Swing, JavaFX & SWT 2
C AWT Über Pulldownmenü neue Javadatei öffnen AWT, Swing, JavaFX & SWT 7
E In JTable neue Zeile mit Tabulator einfügen AWT, Swing, JavaFX & SWT 5
G Swing JFileChooser Event für neue Directory? AWT, Swing, JavaFX & SWT 5
M Main Frame schließen und neue Klasse aufrufen? AWT, Swing, JavaFX & SWT 2
P Eigenes TableModel abgeleitet von AbstractTableModel (neue rows nicht sichtbar) AWT, Swing, JavaFX & SWT 6
R Innerhalb der GUI Klasse meine neue Klasse aufrufen AWT, Swing, JavaFX & SWT 1
4 Neue Fensterinhalte kommen nicht im selben Fenster AWT, Swing, JavaFX & SWT 5
R JFileChooser (neue Instanzen bei Mehrfachauswahl?) AWT, Swing, JavaFX & SWT 6
G Oberfläche löschen und neue erstellen AWT, Swing, JavaFX & SWT 4
S int-berechnung des RGB-Wertes ohne neue Instanz? AWT, Swing, JavaFX & SWT 9
S MVC - Neues Frame, neue View, neuer Controller? AWT, Swing, JavaFX & SWT 3
Icewind Jlist zeigt neue elemente im model nicht sofort an AWT, Swing, JavaFX & SWT 3
Icewind JTable zeigt neue elemente im model nicht sofort an AWT, Swing, JavaFX & SWT 3
O der neue eclipse 3.1 splash screen AWT, Swing, JavaFX & SWT 3
P JComboBox: Items löschen und neue hinzufügen. AWT, Swing, JavaFX & SWT 3
G Neue Komponente erstellen - Fragen/Probleme mit MouseEvents AWT, Swing, JavaFX & SWT 2
J JTextArea + neue Zeile AWT, Swing, JavaFX & SWT 9
R JFrame oder Frame für neue GUI? AWT, Swing, JavaFX & SWT 2
H Neue Instanz einer Klasse bei JButton-Klick AWT, Swing, JavaFX & SWT 5
S Neue Zeile in JTable adden AWT, Swing, JavaFX & SWT 3
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben