Frage

Welche Java GUI-Layout-Manager ist jeder benutzen? In letzter Zeit habe ich mit MigLayout , die einige leistungsfähigen Komponenten Kontrollen hat. mit anderen sind als die Standard-JDK diejenigen, wollte nur sehen, was andere Entwickler.

War es hilfreich?

Lösung

MigLayout ist der GUI-Layout-Manager, die von Java-Entwicklern häufig verwendet wird.

Andere Tipps

GridBagLayout verwendbar. Sobald Sie mit daran gewöhnen, es funktioniert super. Ich denke, die Standard-JDK Layout-Manager auf ihre eigenen ziemlich mächtig sind. Darüber hinaus erhalten Sie die Abhängigkeit von 3rd-Party-Bibliotheken zu minimieren.

MiG und Formlayout (JGoodies) ist ausgezeichnet für die manuelle Layout (und fast alle Layout wird schließlich manuell). Mein größter Ratschlag ist Ihre Ansichten so zu gestalten, dass Sie vollständig das Layout herausreißen und neu zu implementieren, ohne die Anwendung zu beeinträchtigen (gute Trennung von View und Controller ist der Schlüssel hier).

nimmt auf jeden Fall einen Blick auf JGoodie der PresentationModel Ansatz für ‚dumm‘ Ansichten zu implementieren. Ich verwende diese Technik mit einem GUI-Builder (I Grouplayout mit der Jigloo GUI-Builder Plugin) für die schnellen Prototypen werfen weg. Nach 3 oder 4 Iterationen, geht das in der Regel aus dem Fenster und wir tun eine neu implementieren MiG oder Formlayout verwendet wird.

EDIT: Da ich dieses geschrieben habe, habe ich für alle meine Layouts mit MiG bewegt, und ich verwende nicht mehr einen GUI-Builder - es ist einfach viel zu leicht, die Dinge zu legen MiG mit

.

Die letzte Swing-Anwendung ich verwendet arbeitete JGoodies' FormsLayout .

Ich verwende den GridBagLayout . Es scheint eine Menge Code zu nehmen, aber es macht sehr gut aussehende Layouts.

Ich mag auch kombinieren Border mit GridBagLayout Platten für große Anpassbarkeit.

Ich bin ein großer Fan der Verwendung von Tablelayout statt GridBagLayout. Alles nur Sinn macht, während jedes Mal, wenn ich versuche zu verwenden GridBagLayout es meine Seele zermalmt.

Ich verwende für GridBagLayout für die Steuerung zu gehen, aber da java1.6 Ich werde verwenden Grouplayout ist einfach klasse.

Hier ein Screenshot und Beispielcode, es zu benutzen!.

alt text http://img145.imageshack.us/img145/7844/screenshot1dz8 .png

    private void layoutComponents(){
        JPanel panel = new JPanel();

        GroupLayout layout = new GroupLayout(panel);
        panel.setLayout(layout);

        layout.setAutoCreateGaps(true);

        layout.setAutoCreateContainerGaps(true);
        SequentialGroup hGroup = layout.createSequentialGroup();

        JLabel nameLbl  = new JLabel("Name");
        JLabel countLbl = new JLabel("Amount");
        JLabel dateLbl  = new JLabel("Date(dd/MM/yy)");
        hGroup.addGroup(layout.createParallelGroup().
                addComponent(nameLbl).
                addComponent(countLbl).
                addComponent(dateLbl).
                addComponent(go));

        hGroup.addGroup(layout.createParallelGroup().
                addComponent(name).
                addComponent(count).
                addComponent(date));

        layout.setHorizontalGroup(hGroup);

        SequentialGroup vGroup = layout.createSequentialGroup();

        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(nameLbl).addComponent(name));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(countLbl).addComponent(count));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(dateLbl).addComponent(date));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(go));
        layout.setVerticalGroup(vGroup);

        frame.add( panel , BorderLayout.NORTH );
        frame.add( new JScrollPane( textArea ) );
    }

Ich benutze DesignGridLayout für die meisten meiner Platten.

Für die seltenen Platten, die DesignGridLayout nicht vollständig verarbeiten, verwende ich eine Mischung aus Border und DesignGridLayout.

Mit DesigngridLayout können Sie manuell Ihre Layouts mit einer minimalen Anzahl von Zeilen Code codieren, die einfach zu schreiben und zu lesen:

DesignGridLayouut layout = new DesignGridLayout(myPanel);
layout.row().grid(lblFirstName).add(txfFirstName).grid(lblSurName).add(txfSurName);
layout.row().grid(lblAddress).add(txfAddress);
layout.row().center().add(btnOK, btnCancel);

Jede Zeile des Paneels Gitter wird durch eine Codezeile definiert. Wie Sie sehen können, „Zeichnung“ Ihr Panel ganz einfach ist.

Darüber hinaus finde ich DesignGridLayout hat einige einzigartige Eigenschaften (wie seine " smart vertikale Größe ändern ").

GridBagLayout ist mächtig, aber recht primitiv: Der Code, die Drähte bis das Layout sehr ausführlich ist. Dieses Dienstprogramm Bibliothek (Ist nur 1 JAR-Datei, die etwa 10 Klassen) vereinfacht viele Werke: http : //code.google.com/p/painless-gridbag/ der folgende Ausschnitt aus der Homepage dieser Website zitiert:

    PainlessGridBag gbl = new PainlessGridBag(getContentPane(), false);

    gbl.row().cell(lblFirstName).cell(txtFirstName).fillX()
             .cell(lblFamilyName).cell(txtFamilyName).fillX();
    gbl.row().cell(lblAddress).cellXRemainder(txtAddress).fillX();

    gbl.doneAndPushEverythingToTop();

Als allgemeine Übersicht, Sie könnten einen Artikel finde ich benötigt sehr viel Zeit vor bei Sonne nützlich sein geschrieben. Es ist nicht auf dem neuesten Layout-Manager auf dem neuesten Stand, aber es konzentriert sich auf die effektive Verschachtelung von Layout-Managern, anstatt zu versuchen, alles mit einem Layout zu tun.

Siehe http://developer.java.sun.com/developer/ onlineTraining / GUI / AWTLayoutMgr

Ich habe festgestellt, dass für jede nicht triviale GUI I mehrere Layouts mit verschachtelten Unterplatten verwenden, in denen die Hauptplatte eine GridBagLayout und jede Teilplatte (üblicherweise ohne eine Grenze oder eine Anzeige, dass es eine Platte ist) aufweisen kann Verwendungszwecke ein einfacheres Layout, wo möglich. Ich werde typischerweise BorderLayout, FlowLayout und BoxLayout für kleinere, einfachere Unterplatten verwenden. Durch die Aufteilung kleine Abschnitte der GUI in Unterplatten und mit dem einfachstenen Layout möglich, dass Abschnitt der GUI steuern können Sie komplex, gut arrangiert Displays zu schaffen, ohne zu viele Kopfschmerzen von GridBagLayout vielen Optionen. Auch durch gleiche Display-Funktionalität in einem Panel Gruppierung, es erzeugt mehr lesbaren Code.

Frühling Layout , die für die entwickelt wurde, Mantisse gUI-Builder, die einen Teil von netbeans ist.

ich verwendet habe, Grouplayout auch. Auch hier ist es ein Standard-JDK Layout-Manager wie von Java6, aber Sie können auch die Bibliothek trennen finden.

Ich habe immer ein großer Fan des GridBagLayout gewesen. Es ähnelt HTML-Tabellen viel, so dass es auf diesen Web-Programmierer intuitiv ist.

begann ich verschiedene verschachtelte Layouts verwenden, dann bewegt über GridBagLayout aus (was ziemlich frustrierend ist). Seitdem habe ich versucht, Formlayout (aber fand es nicht zu irgendetwas geeignet war, sondern Formen) und fest auf Tablelayout angesiedelt, die insgesamt mit Ich bin sehr glücklich.

Seitdem habe ich MigLayout entdeckt und obwohl ich nicht viel mehr getan haben, als mit ihm zu spielen, scheint es durchaus in der Lage, ganz ähnlich wie Tablelayout und wahrscheinlich ein wenig sauberer.

Das große Plus für mich ist, dass MigLayout gesetzt ist Teil des JDK werden, so dass ich die Absicht, es zu benutzen, so ziemlich ausschließlich, wenn es der Fall ist.

Die andere Sache zu erinnern ist, dass unabhängig davon, welche schwergewichtige Layout Sie setzen sich auf, da für einige der einfacheren Layout-Manager wie Gridlayout immer ein Ort ist. Ich habe einige schreckliche Dinge mit GridBagLayout getan gesehen, die viel leichter mit einem einfacheren Layout-Manager hätte getan werden können.

Ich ziehe es Abhängigkeiten von 3rd-Party-Libs zu minimieren, so ist es in der Regel BoxLayout für Dialoge und GridBagLayout für „kompliziert“ Layouts. GridBagLayout ist leicht genug, um zu verstehen, aber ein bisschen schwer zu konfigurieren. Ich schrieb mir ein Werkzeug, um den Code von HTML-Layout für die Erstellung von (Hoffnung, dass auch andere hilft): http: //www.onyxbits. de / content / Blog / patrick / java-gui-Gebäude-GridBagLayout-Manager-made-easy

Der einzige Layout-Manager, die ich gefunden habe, dass ich eigentlich wie ist der Relative Layout Manager . Der Relative Layout Manager arbeitet in einer Weise, die im Einklang mit, wie Dialogfelder konzeptionell organisiert. Ein Rückzieh ist, dass während dieser Layout-Manager beschäftigt sich mit additiven Einschränkungen. Es tut nicht scheint Verhältnis Einschränkungen zu umgehen. Zum Glück ist es ziemlich gut entwickelt, und ich konnte diese Funktion implementieren.

Ich benutze Border 90% der Zeit, während nisten BoxLayout und SpringLayout

Ich bin ein wenig Java-Neuling.

Ich habe versucht, GridBagLayout gab, dann versuchte BoxLayout, dann gab, dann wurde mein eigenes benutzerdefiniertes Layout denen gearbeitet. Mit GridBag und Box Ich habe meine beste Vermutung in und die Layout-Motoren entschieden, etwas anderes, ohne ersichtliche Art und Weise zu tun, um sie zu debuggen.

Mit meinem benutzerdefinierten Layout, konnte ich Koordinaten und Breiten und Höhen ausdrucken, um herauszufinden, wo es schiefgeht. Es ist ein mathy Bit platzieren Dinge, aber Sie haben die volle Leistung des Java bekommen eher zu verwenden als die begrenzte Vokabular eines des eingebauten Layout-Managers.

Natürlich ist es gerade für ein Haus-Projekt war, würde man das nie erlaubt wird bei der Arbeit zu tun.

Ich verwende GridBagLayout für Form wie Layouts verwenden Border für einfache Layouts und Flowlayout für die Anzahl der horizontalen Symbole / Tasten, die Leerzeichen dazwischen haben. Netbeans ist auch ein guter GUI-Builder, das eine Menge langweiligen Layout Codierungen vermeiden kann Ihre Zeit zu sparen.

Ich habe vor kurzem begonnen, mit Swing und ich bin mit GridBagLayout.

Ich war krank von all den layoutmanagers, die eine Menge Setup benötigt, waren nicht sehr gut lesbar oder manuell zu tun anstrengend, also schrieb ich meine eigenen sehr einfach laoutmanager, die die Abstraktion von zwei photocorners nutzt jede Komponente an Ort und Stelle zu halten. Sie können Ihre Komponente wie diese hinzu: parent.add(child,"topleft(0, 0.5)bottomright(0.5,1.0)");

Werfen Sie einen Blick hier https://github.com/hageldave/UsefulStuff/blob /master/src/PhotoCornersLayout.java ;) Sie sind für eine korrekte Layout selbst wenn responisble, denn es ist nicht Überlappungen oder andere shortcommings Ihre Anlage zu überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top