Java lernen

Swing Neue Swing LayoutManager: TOnion Projekt

Diskutiere Neue Swing LayoutManager: TOnion Projekt im AWT, Swing, JavaFX & SWT Forum; Hallo, hier möchte ich gerne zwei neue LayoutManager für Swing vorstellen: TotemLayoutManager und TrainLayoutManager Beide arbeiten...

  1. Birke
    Birke Neues 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 :)
     
  2. Vielleicht hilft dir diese Seite hier weiter (Klick!)
  3. Ruzmanz
    Ruzmanz Mitglied
    Ist es echt so schwer 5 Zeilen Beispielcode und ein Bild zu posten?
     
  4. Joose
    Joose Super-Moderator Mitarbeiter
    Und wo genau liegt der Vorteil gegenüber den normalen Swing Layouts?
     
  5. Birke
    Birke Neues 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.
     
  6. strußi
    strußi Mitglied
    du hast das doch sicher getestet, mach davon ein shot und postet den ;-)
     
  7. Birke
    Birke Neues 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:

    Zuletzt bearbeitet: 18. Juni 2014
  8. Joose
    Joose Super-Moderator Mitarbeiter
    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.
     
  9. Birke
    Birke Neues 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
     
  10. Birke
    Birke Neues 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:

    Code (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;
            }
     
    Code (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: 5. Juli 2014
  11. Birke
    Birke Neues Mitglied
  12. Hinweis: Du möchtest Java lernen? Vielleicht hilft dir diese Seite hier weiter.
Die Seite wird geladen...

Neue Swing LayoutManager: TOnion Projekt - Ähnliche Themen

Timer-Thread in Swing öffnet jedes Mal ein neues Fenster
Timer-Thread in Swing öffnet jedes Mal ein neues Fenster im Forum Java Basics - Anfänger-Themen
[gelöst]Neues Swing Element erstellen
[gelöst]Neues Swing Element erstellen im Forum AWT, Swing, JavaFX & SWT
Neuer? SwingBuilder für Eclipse
Neuer? SwingBuilder für Eclipse im Forum IDEs und Tools
[Swing] Wie zeichne ich neue Linien
[Swing] Wie zeichne ich neue Linien im Forum AWT, Swing, JavaFX & SWT
Java 6 - Übersicht über die Neuerungen im GUI / Swingbereich
Java 6 - Übersicht über die Neuerungen im GUI / Swingbereich im Forum AWT, Swing, JavaFX & SWT
Thema: Neue Swing LayoutManager: TOnion Projekt