Mogę tylko odpowiedzieć za to, co dla mnie zadziałało. Inni komentatorzy zwrócili uwagę, że GUI Java ogólnie wpadają w „niesamowitą dolinę” o niezbyt rodzimym wyglądzie i odczuciu, i nie kwestionuję tego.
Dobrze wykorzystaj Action API. Pozwala lepiej łączyć różne działania, które wykona użytkownik, i pozwala znacznie łatwiej łączyć je ze skrótami, klawiszami akceleratora, przyciskami i innymi obiektami wejściowymi.
Użyj odpowiedniego menedżera układu. GridBagLayout jest niezwykle potężny, ale posunąłbym się do stwierdzenia, że nie da się go utrzymać bez nadmiernej ilości komentarzy. Kiedy uruchamiam narzędzia do analizy kodu statycznego, takie jak Sonar, na starszej aplikacji GUI, którą utrzymuję, zawsze wskazuje to na ogromne ilości magicznych liczb, aby układ GridBags był odpowiedni. Odniosłem duży sukces z GroupLayout, który pozwala uniknąć konieczności wyrównywania pikseli.
Jeśli uważasz, że potrzebujesz JDialog ... prawdopodobnie nie. Okna dialogowe są okropne, jeśli chodzi o wrażenia użytkownika - ta aplikacja postanowiła używać ich w każdym menu i formie oraz w dziwaczny sposób egzekwować zawsze obowiązujące reguły. To zamieniło się w koszmar konserwacji, kiedy tak naprawdę musieliśmy coś ostrzec w menu. Sfrustruj kliknięcie w nieokreślalne - a tym samym nie do odrzucenia - okna dialogowe.
W razie potrzeby użyj SwingWorker zamiast zwijania własnej wielowątkowości. Bardzo łatwo jest rozszerzyć SwingWorker i wykonać długie zadanie, zapewniając regularne aktualizacje z powrotem do GUI. Pomyśl o pobraniu aktualizacji klienta. Zajmie się ona planowaniem wątków roboczych dla Ciebie i pozwoli ci opublikować procent pobierania z powrotem do widoku, dzięki czemu możesz zaktualizować pasek postępu lub to, co masz.
To wszystko, co mogę zasugerować, w moim, co prawda, ograniczonym doświadczeniu.