2010-04-11 11 views
18

Dziękujemy za odpowiedzi na my previous question about GUI in java. Zastanawiam się teraz, jakie są rozwiązania wybrane przez profesjonalistów, aby uzyskać ładny interfejs graficzny dla "prawdziwych" aplikacji. Czy używasz swing i JComponents i po prostu zmieniasz "wygląd i styl"? Czy wolisz awt lub inną bibliotekę?W jaki sposób "profesjonaliści" tworzą GUI w języku Java?

Przepraszam, jeśli pytanie to brzmi dziwnie, jestem studentem i ja naprawdę nie wiem, jak Java jest stosowany w realnym świecie ...

+2

@Jules Olléon: Wysyłam komercyjnego oprogramowania napisany w języku Java, który działa na Windows, OS X i Linux. Używam edytora GUI Swinga i IntelliJ'a (który jest świetny, ponieważ automagicznie ukrywa przed tobą wiele niepotrzebnego, nieuciążliwego kodu Swing) oraz niektórych komponentów na zamówienie (działa to w 100% na każdej platformie). Podobnie jak niestandardowy pasek postępu podwójnego/tri/quadowego, niestandardowa lista "znajdź-jak-ty-pisz" (taka jak ta, której Google używa do sugestii), oraz kilka bardziej zaawansowanych składników niestandardowych specyficznych dla mojej domeny problemów. – SyntaxT3rr0r

+0

@WizardOfOdds: Jakiego LaF używasz w systemach Windows i Linux? Czy używasz domyślnego stylu Windows i GTK lub Swing? – Jonas

+0

@ Jonas: W systemie Windows oferujemy użytkownikom wybór pomiędzy domyślnym układem Swing a Nimbus. W Linuksie jest to domyślna funkcja Swing, niezależnie od tego, co się dzieje: ale jest * dużo * problemów (w tym wiele pytań tutaj na SO). Na przykład mamy "zamykane karty", a my * musimy * działać pod 1.5. Stąd mamy nasz własny renderer dla kart itd. To jest * dziki * świat niekompatybilności tam :) Oprogramowanie * działa * na Linuksie i my developerzy rozwijamy i testujemy to na Linuksie, ale my sprzedajemy tylko na OS X i Windows :) – SyntaxT3rr0r

Odpowiedz

9

W naszej firmie używamy Huśtawka, ponieważ jest obsługiwana przez JVM z pudełka, ale używamy kolorów w kolorach tła dla niektórych paneli i przycisków.

Gdybyśmy użyli czegoś innego, jak SWT lub Jambi, musielibyśmy również wdrożyć te frameworki na wszystkich platformach i przetestować te frameworki dla wszystkich systemów operacyjnych i (obsługiwanych) wersji java. W ogóle nieźle.

Jest jednak dość trudno stworzyć przyjemną, responsywną aplikację z Swingiem; więc naprawdę musisz użyć SwingWorker i tym podobnych. Przy odrobinie doświadczenia możesz jednak stworzyć w ten sposób fajną aplikację.

Nawet jeśli nie jest to najszybsza struktura do opracowania, czas programowania jest naprawdę niewielki w porównaniu do definiowania wymagań funkcjonalnych interfejsu użytkownika, a także testowania i pomocy technicznej po wydaniu wersji.

To powiedziawszy, naszym celem są komputery stacjonarne. Jeśli kierujesz reklamy na urządzenia mobilne lub potrzebujesz interfejsu sieciowego, Twoje wybory mogą się różnić.

4

ja nie wierzę, że ktoś preferuje AWT więcej. Swing wyparł go całkowicie jedenaście lat temu, opierając się na nim, aby naprawić wady w projekcie AWT 1.0.

Swing to nie jedyny sposób, w jaki profesjonaliści tworzą interfejsy Java. To działa na komputerach stacjonarnych, ale jest też JavaFX. W przypadku Internetu interfejsy są budowane przy użyciu HTML, CSS, JavaScript i JSP.

+2

Z miłości do Boga, nie używaj AWT! Rozwijanie jako aplikacja internetowa ma wiele zalet - nie mniejszym z nich jest łatwiejsze wdrażanie. – Stephen

+0

@Stephen AWT GUI i aplikacje internetowe są zupełnie inne. To zależy od tego, co próbujesz zrobić. Swing ma jednak przewagę nad AWT, chociaż pakiet AWT nadal służy do obsługi zdarzeń. – aduric

+0

@aduric, nie miałem zamiaru przedstawiać ich tak samo. Po prostu stwierdziłem dwie rzeczy: 1) GUI są zasysane, a 2) aplikacja internetowa ma wiele zalet. Ale interfejsy graficzne i aplikacje internetowe nie są całkowicie różne, zazwyczaj możesz zrobić to, co chcesz zrobić lokalnie w aplikacji internetowej. – Stephen

1

Z mojego doświadczenia wynika, że ​​większość organizacji, które chcą tworzyć bogate GUI nadal używać Swing i ręcznie przejść przez wszystkie przykrości menedżerów układ, itp

Zastosowanie SWT jest dość ograniczony do organizacji, które korzystają z Eclipse RCP jako platforma. Nie wiem, dlaczego nie przyłapał się na tej platformie.

To smutne przyznać, ale graficzne interfejsy Java Swing zazwyczaj nie wyglądają dobrze, chyba że spędzają dużo czasu, tworząc dla nich bardziej natywną atmosferę. Nawet wtedy często przegrywają z estetyką z odpowiednimi programami napisanymi specjalnie dla Windows i używającymi API Windows, takich jak WinForm.

+0

Powinieneś wypróbować projektanta GUI w Netbeans! –

+0

Posiadanie UIManagera ustawia wygląd i działanie klasy systemowej w systemie Windows. Wszystko wygląda prawie tak samo jak w natywnej aplikacji Windows. Istnieje kilka drobnych różnic tu i tam (głównie w komponentach AWT), ale Swing wykonuje dobrą robotę emulacji rodzimego wyglądu. – bgroenks

0

Macintosh OS X tworzy własne środowisko wykonawcze Java. Dają komponentom Swing ten sam wygląd, co aplikacje natywne.

Używam ściśle Swing. Rozprowadzam "prawdziwe" aplikacje desktopowe za pośrednictwem Web Start na komputerach Mac i Windows, które współpracują z czytnikiem kart inteligentnych użytkownika.

IDB NetBeans zapewnia sposób WYSIWYG do tworzenia formularzy. Wypróbowałem to i jest całkiem niezłe, ale wciąż używamy Eclipse jako naszego IDE i projektujemy formularze w kodzie.

+1

Edytor WYSIWYG NetBeans to koszmar. Jeśli możesz sobie na to pozwolić, poleciłbym JFormDesigner lub po prostu zrobił to ręcznie z menedżerem układu. Na początku może to być więcej pracy, ale na dłuższą metę masz większą kontrolę. – cdmckay

+0

Niestety, nie jest. Masz pełną kontrolę nad tym, co i gdzie, we właściwościach i wiązaniach, i tym podobnych. Musisz tylko wiedzieć, gdzie szukać. Btw .: O ile mi wiadomo, MacOSX sprawia, że ​​* AWT * wygląda jak macos aqua, a nie huśtawka. – Tedil

+0

Nightmare ... Dlaczego? –

1

Zwykle używać Swing becuse jest obsługiwany w standardowych JRE spośród pudełko. Zwykle wykonujemy wstępne projektowanie formularzy i łączenie zdarzeń w Netbeans, a następnie eksportujemy je na dowolne życzenie, na przykład Eclipse.

Netbeans wypluwa czystą Javę przy użyciu standardowych bibliotek (plus jeden lub dwa słoiki, które musisz uwzględnić), więc nie ma problemu z zaprojektowaniem formularza w Netbeans, a później przejściem do czegoś innego.

Niektórzy sugerują, robi układ formularza ręcznie przy użyciu menedżera układu. Widzę to jako opcję tylko wtedy, gdy robisz coś dużego i bardzo dobrze zaplanowanego, co trzeba utrzymywać w nieskończoności. W przeciwnym razie jest to zbyt czasochłonne, by być tego warte.

1

Stawiamy na SWT dla naszych GUI Java. Tak, musisz dołączyć zewnętrzną bibliotekę natywną, ale jej wygląd jest natywny, bardziej responsywny (chociaż Swing stał się znacznie szybszy w ciągu ostatnich kilku lat) i bezproblemowo z innymi aplikacjami na platformie docelowej.

Powiązane problemy