2010-04-11 22 views
18

Vielen Dank für Ihre Antworten auf my previous question about GUI in java. Ich frage mich nun, welche Lösungen von Profis gewählt wurden, um eine schöne Benutzeroberfläche für "echte" Anwendungen zu erhalten. Verwenden Sie Swing und JComponents und ändern Sie einfach das "Look and Feel"? Bevorzugen Sie awt oder eine andere Bibliothek?Wie machen "Profis" eine GUI in Java?

Sorry, wenn diese Frage klingt komisch, ich bin ein Student, und ich weiß nicht wirklich, wie Java in der realen Welt verwendet wird ...

+2

@Jules Olléon: Ich vertreibe kommerzielle Software in Java geschrieben, die unter Windows, OS X und Linux funktioniert. Ich benutze Swing und IntelliJ GUI-Editor (was großartig ist, weil es automatisch viele sinnlose lange uninteressante Swing-Code von Ihnen verbirgt) und einige maßgeschneiderte Komponenten (das funktioniert 100% das gleiche auf jeder einzelnen Plattform). Wie eine benutzerdefinierte Dual/Tri/Quad-Fortschrittsanzeige, eine benutzerdefinierte Liste zum Suchen nach Typ (wie die, die Google für Vorschläge verwendet) und einige speziellere benutzerdefinierte Komponenten, die spezifisch für meine Problemdomäne sind. – SyntaxT3rr0r

+0

@WizardOfOdds: Welche LaF verwenden Sie unter Windows und Linux? Verwenden Sie den Windows- und GTK-Stil oder den Swing-Standard? – Jonas

+0

@Jonas: Unter Windows bieten wir unseren Benutzern die Wahl zwischen dem Standard-Swing-Layout und Nimbus. Unter Linux ist es das Standard-Swing, was auch immer das sein mag: Aber es gibt eine Menge Probleme (einschließlich vieler Fragen hier auf SO). Zum Beispiel haben wir "verschließbare Tabs" und wir * müssen * unter 1.5 laufen. Daher haben wir einen eigenen Renderer für Tabs usw. Es ist eine * wilde * Welt der Inkompatibilitäten da draußen :) Die Software * funktioniert * unter Linux und wir Entwickler entwickeln und testen sie unter Linux, aber wir verkaufen nur unter OS X und Windows :) – SyntaxT3rr0r

Antwort

9

In unserem Unternehmen verwenden wir Swing, da dies von der JVM standardmäßig unterstützt wird, aber wir verwenden für einige Panels und Schaltflächen farbcodierte Hintergrundfarben.

Wenn wir etwas anderes verwenden würden, wie SWT oder Jambi, müssten wir auch diese Frameworks für alle Plattformen ausrollen und diese Frameworks für alle OSSes und (unterstützten) Java-Versionen testen. Überhaupt nicht nett.

Es ist jedoch ziemlich schwierig, eine nette responsive Anwendung mit Swing zu erstellen; Sie müssen also SwingWorker und ähnliches verwenden. Mit ein wenig Erfahrung können Sie jedoch auf diese Weise eine schöne Anwendung erstellen.

Und auch wenn es nicht das schnellste Framework ist, um zu entwickeln, ist die Entwicklungszeit im Vergleich zur Definition der funktionalen Anforderungen der Benutzeroberfläche und des Testens und Supports, wenn die Version veröffentlicht wird, wirklich gering.

Das heißt, unser Ziel ist Desktops. Wenn Sie mobile Geräte als Ziel haben oder auch ein Web-Frontend benötigen, können Ihre Auswahlmöglichkeiten variieren.

4

Ich glaube nicht, dass jemand lieber mehr AWT. Swing verdrängte es vor elf Jahren komplett und baute darauf, um Fehler im AWT 1.0 Design zu korrigieren.

Swing ist nicht der einzige Weg, wie Profis Java-UIs erstellen. Das funktioniert für Desktops, aber jetzt gibt es auch JavaFX. Für das Web werden Benutzeroberflächen mit HTML, CSS, JavaScript und JSPs erstellt.

+2

Aus Liebe zu Gott, bitte benutze AWT nicht! Die Entwicklung als Web-App hat zahlreiche Vorteile - nicht zuletzt die einfachere Bereitstellung. – Stephen

+0

@stephen AWT GUIs und Web-Apps sind völlig anders. Es hängt davon ab, was Sie versuchen zu tun. Swing hat jedoch einen Vorteil gegenüber AWT, obwohl das AWT-Paket immer noch für die Ereignisbehandlung verwendet wird. – aduric

+0

@aduric, hatte ich nicht vor, sie als das gleiche zu präsentieren. Ich habe nur zwei Dinge gesagt 1) awt GUIs saugen, und 2) eine Web-App hat zahlreiche Vorteile. Aber GUIs und Web-Apps sind nicht völlig verschieden, Sie können das meiste von dem machen, was Sie lokal in einer Web-App tun möchten. – Stephen

1

Meine Erfahrung ist, dass die meisten Organisationen, die reich GUIs noch Schaukel verwenden erstellen möchten, und alle manuell den Belästigungen von Layout-Manager gehen, usw.

Die Verwendung von SWT ziemlich auf Organisationen beschränkt ist, dass die verwenden Eclipse RCP als ihre Plattform. Ich bin mir nicht sicher, warum es außerhalb dieser Plattform nicht angekommen ist.

Es ist traurig, zuzugeben, aber Java Swing GUIs sehen im Allgemeinen nicht gut aus, es sei denn, Sie verbringen viel Zeit damit, ein nativeres Gefühl für sie zu schaffen. Selbst dann verlieren sie oft an äquivalenten Programmen, die speziell für Windows geschrieben wurden und Window-APIs wie WinForms verwenden.

+0

Sie sollten den GUI-Designer in Netbeans versuchen! –

+0

Wenn der UIManager der Systemklasse das Aussehen und Verhalten zuweist, ist das unter Windows wirklich in Ordnung. Alles sieht fast genauso aus wie in einer nativen Windows-Anwendung. Es gibt hier und da ein paar kleine Unterschiede (hauptsächlich in den AWT-Komponenten), aber Swing macht es gut, das native Aussehen zu emulieren. – bgroenks

0

Macintosh OS X erstellt ihre eigene Java-Laufzeitumgebung. Sie geben Swing-Komponenten das gleiche Aussehen und Gefühl wie native Anwendungen.

Ich verwende streng Swing. Ich verteile "echte" Desktop-Anwendungen über Web Start für Mac und Windows, die mit dem Smartcard-Lesegerät des Benutzers verbunden sind.

Die NetBeans IDE bietet Ihnen eine WYSIWYG-Methode zum Erstellen von Formularen. Ich habe es ausprobiert, und es ist ziemlich ordentlich, aber wir verwenden immer noch Eclipse als unsere IDE und entwerfen die Formulare im Code.

+1

Der NetBeans WYSIWYG-Editor ist ein Albtraum. Wenn Sie es sich leisten können, empfehle ich JFormDesigner, oder einfach von Hand mit einem Layout-Manager. Es kann zunächst mehr Arbeit sein, aber auf lange Sicht haben Sie mehr Kontrolle. – cdmckay

+0

Tut mir leid, es ist nicht. Sie haben die volle Kontrolle darüber, was wo und alle Eigenschaften und Bindungen und was nicht geht. Sie müssen nur wissen, wo Sie suchen müssen. Btw .: Soweit ich weiß, macht MacOSX * AWT * wie Macos Aqua, nicht Swing. – Tedil

+0

Alptraum ... Warum? –

1

We Swing verwenden in der Regel becuse es in Standard-JREs aus unterstützt wird die Kiste. Normalerweise machen wir den ersten Formularentwurf und die Ereignisverbindung in Netbeans und exportieren sie dann nach Belieben, zum Beispiel Eclipse.

Netbeans spuckt reines Java unter Verwendung von Standardbibliotheken aus (plus ein oder zwei Gläser, die Sie hinzufügen müssen), also ist es keine große Sache, das Formular in Netbeans zu entwerfen und später zu etwas anderem zu gehen.

Einige Leute haben vorgeschlagen, das Formularlayout manuell mit einem Layoutmanager zu erstellen. Ich sehe das als eine Option nur, wenn Sie etwas Großes und sehr gut geplantes tun, das ad infinitum beibehalten werden muss. Sonst ist es einfach zu zeitaufwendig, es wert zu sein.

1

Wir verlassen uns auf SWT für unsere Java GUIs. Ja, Sie müssen eine externe native Bibliothek hinzufügen, aber das Erscheinungsbild ist nativ, reaktionsschneller (obwohl Swing in den letzten Jahren viel schneller geworden ist) und nahtlos mit anderen Apps auf der Zielplattform.