Wir haben ein Dilemma; Entwicklung einer Desktop-Anwendung mit Matisse oder Jigloo ..
Matisse hat diese XML-Formulardateien, von denen wir befürchten, sie später zu pflegen. Wir wissen nicht einmal, ob MyEclipse Matisse, sogar Netbeans, weiter unterstützen soll - denken Sie, dass sie die OS-Unterstützung von Matisse aufgeben werden?
Mehr oder weniger Jigloo und Matisse haben ein ähnliches Verhalten, obwohl Jigloo mehr Designerwünschen gehorcht, hat Matisse von Zeit zu Zeit dieses seltsame Ausrichtungsverhalten.
Jigloo erzeugt Java-Code, der bearbeitet werden kann und der dazu führen kann, dass der visuelle Editor kein Formular zeichnen kann. Das ist wahrscheinlich der Grund, warum Matisse eine Definition von Elementen in einer stabileren XML-Form haben möchte, aus der Java-Code generiert wird.
Matisse würde nicht viel helfen, wenn ein Fehler beim Instanziieren eines GUI-Elements auftritt, so dass das Setzen von benutzerdefinierten Elementen auch ein Alptraum sein kann.
Wenn Sie Code in Jigloo eingeben, löscht der visuelle Editor das Bild, so dass Sie warten müssen, bis das Bild nach dem Bearbeiten des Codes angezeigt wird. In Matisse können Sie Fehler in der Klasse haben und GUI noch bearbeiten.
Bitte helfen Sie uns, indem Sie abstimmen, was bevorzugen Sie mehr und warum.
Bitte benutzen Sie auch keines! Wie bei diese Antwort , ist es meine starke Meinung ( nach dem Schreiben von Swing-GUIs für 10 Jahre), ist das Verwenden von GUI-Buildern in allen außer den meisten Edge-Fällen eine schlechte Idee . HAND CODE IHRE GUI!
Ob Sie Matisse oder Iglu wählen, es ist kein Standard, wird in Ungnade fallen und ein besseres Werkzeug wird kommen. An diesem Punkt haben Sie Legacy-Code, der nahezu unmöglich zu verwalten ist . Dies ist bereits in der Geschichte von Java-GUI-Buildern
Sie sollten es vermeiden, Ihre Entwickler zu zwingen, eine IDE zu verwenden, und es ist ein großer Aufwand, von Entwicklern zu erwarten, dass sie zu einer bestimmten IDE wechseln, wenn sie den GUI-Code betrachten. Sie werden frustriert sein, da sie sich nicht an Tastenbelegungen erinnern können, das Projekt-Setup ist veraltet, sie haben die falsche Version installiert usw. Die Leute machen Schnell-Updates ohne den Builder . An diesem Punkt ist Ihr Code sowohl in Ihrer bevorzugten IDE als auch in der GUI-Builder-Datei istehelf nicht mehr erreichbar! Das Ganze ist ein Chaos.
Das Entwerfen einer GUI ist meiner Erfahrung nach keine besonders mühsame Aufgabe und macht wahrscheinlich nicht mehr als 5 bis 10% der gesamten Entwicklungszeit einer Anwendung aus. Auch wenn Sie mit Matisse oder Igloo einen 50% igen Zeitvorteil gegenüber der manuellen Programmierung der GUI haben, ist das im Großen und Ganzen bedeutungslos . Es ist sicherlich nicht die versteckten Kosten und bevorstehende Wartungskatastrophen, die vor uns liegen, wert.
GridBagLayout
ist nicht schwer . Es ist einfach nicht! Es ist wirklich sehr einfach. Es dauert ein paar Minuten zu lernen und danach wirst du nie mehr zurückblicken. Ihre GUI sieht so aus, wie Sie sie aussehen lassen wollen, und Ihr Code wird dadurch besser wartbar. Benutze GridbagLayout
!
Ich habe viel Zeit damit verbracht, Leute davor zu warnen, und habe mich als richtig erwiesen.
Ich würde auch nicht mitgehen. Das Beste, was ich bisher gefunden habe, ist Instantiations Swing Designer. Es ist nicht kostenlos, aber auch nicht teuer. Es unterstützt alle wichtigen Swing-Layouts und erzeugt KEINE zusätzlichen Artefakte außer reinem Java-Code.
Hier ist der Link , falls Sie daran interessiert sind.
Ich würde Matisse vorziehen, da Netbeans von Sun Microsystems unterstützt wird und die Möglichkeit, dass das Projekt in naher Zukunft verschrottet wird, glücklicherweise niedrig erscheint.
Ich kenne auch nicht die Größe Ihres Projekts, aber ich habe ein paar kleine entwickelt und ich benutze matisse persönlich, um zu sehen, wie das Layout aussehen würde, und dann alles weiter zu programmieren mit dem Miglayout Bibliothek. Es erhöht die Menge an Codierung viel, gibt aber eine gute Kontrolle und Flexibilität. Und es besteht die Möglichkeit, dass diese Bibliothek in Java 7 enthalten sein könnte und folglich in Matisse eingebettet wäre.
Ich hatte persönlich einige Gelegenheiten, bei denen die XML-Datei, die ein Matisse-Formular unterstützt, irgendwie mit dem Code nicht mehr synchron war und auf ein Backup zurückgreifen musste, damit es wieder funktionierte. Das war genug, um mich zu verscheuchen. Ich habe jedoch keine Erfahrung mit Jigloo.
Meine aktuellen Projekte verwenden TableLayout ausführlich. Es ist leicht zu verstehen und (von allen Layout-Managern, die ich versucht habe) zu erhalten. Ich habe keine andere Lösung im GUI-Design für Java gefunden, mit der ich mich wohler fühle, als die GUIs manuell zu codieren. In Zukunft scheint es die beste "zukunftssichere" Möglichkeit zu sein, meine GUIs zu kodieren.
Ich stimme Chintan bei der Verwendung von Matisse oder ähnlichem zu, um Ihren Entwurf nachzuahmen und dann das Layout in ein anderes Layout (wie TableLayout) zu konvertieren. Persönlich verwende ich gerne Bleistift und Papier, um das meiste zu machen. Nicht gerade High-Tech, aber es macht den Job erledigt.
Ich habe Jigloo nicht ausprobiert, aber ich würde einen vierten in den Mix werfen.
JFormDesigner ist der beste Swing UI Designer, den ich je benutzt habe. Wie Matisse erstellt es XML-Formulardateien, aber das ist das einzige Negative an diesem Tool.
Es unterstützt alle Standard-Layout-Manager sowie einige gängige Layout-Manager (z. B. JGoodies FormLayout). Es hat Plugins für IntelliJ und Eclipse und kann auch als eigenständiges Tool laufen.
Hier ist der Link
hth
Koen
Was können Sie erwarten, wenn Sie eine Datei, die von einem Tool erstellt wurde, durcheinander bringen? Unsinn, oder? Dies ist ein sehr sehr wichtiger immer von den Entwicklern vergessen.
Nehmen Sie Matisse als Beispiel. Es erzeugt eine XML-Datei für Sie und eine .java-Datei für Sie. Warum auf der Erde Entwickler beginnen, diese Klassen zu ändern? Später beschweren sie sich, dass alles durcheinander ist und sie weisen Matisse als Schuldgefühle aus, weil Matisse weder A noch B macht. Das einzige, was Matisse schuldig ist, ist es nicht, das von den Entwicklern geförderte Durcheinander zu beheben . Dies ist ein Problem im Bereich der künstlichen Intelligenz und ich persönlich erwarte keine Lösung bald.
Es gibt eine mehr oder weniger einfache Lösung dafür: OOP.
Ich erkläre: Eines der wichtigsten Konzepte von OOP ist "Verantwortung", was bedeutet, dass eine bestimmte Klasse eine begrenzte und klar definierte Verantwortung in einer breiteren und komplexeren Problemdomäne hat. Also hat Matisse die UI für Sie erstellt, die im Wesentlichen aus UI-Elementen, Event-Handlern, etc. besteht.
Dann sagst du: Nun ... Ich muss etwas Logik hinzufügen, sonst ist die Benutzeroberfläche unwirksam. Wahr. Dies ist eine weitere Verantwortung, die nicht in der von Matisse erzeugten Klasse implementiert werden kann. Da entweder Menschen faul sind oder nicht verstehen, was "Verantwortung" in OOP bedeutet, implementieren die Leute was sie brauchen, fügen viele Variablen hinzu und fördern jede Art von Wahnsinn in einer Klasse, die definitiv nicht für die Geschäftslogik verantwortlich ist.
Durch eine sehr einfache Sache wie die Vererbung können Sie Geschäftslogik in einer erweiterten Klasse trennen. Die Basisklasse stammt von Matisse. Der erweiterte ist Ihre Klasse implementiert von Hand, die Implementierung von Event-Handlern, Initialisierung von UI-Elementen, etc. enthalten.
Viele Entwickler sind versucht, die von Matisse erstellte .java-Datei per Hand zu bearbeiten. Die goldene Regel ist: nie , nie bearbeiten Sie die .java-Datei von Hand. Matisse bietet Ihnen die Möglichkeit, alles zu definieren, was Sie brauchen, und anzurufen, was immer Sie brauchen. Wenn Sie die von Matisse erstellten Ressourcen (sowohl .xml als auch .java) nicht bearbeiten, garantieren Sie, dass sie (Matisse) sie wieder laden können, falls Sie die GUI in Zukunft ändern müssen. Wahrscheinlich werden Sie sich dazu verleiten lassen, die .java oder sogar die .xml Datei direkt zu bearbeiten. Bitte widerstehe dieser Versuchung und erziehe dich selbst; du wirst dir in Zukunft selbst danken.
Also ... kannst du jedes Werkzeug verwenden, das du dir wünschst oder was auch immer dir die sexiest UI-Elemente bietet. Alle Tools schlagen fehl, wenn Sie die Benutzeroberfläche nicht von der Geschäftslogik trennen. Alle Werkzeuge werden erfolgreich sein, wenn Sie Ihre Hauptaufgabe als Programmierer erfüllen, nämlich: anständigen Code produzieren.
Tags und Links java user-interface swing design matisse