Tôi chỉ có thể trả lời cho những gì làm việc cho tôi. Các nhà bình luận khác đã chỉ ra rằng các GUI Java nói chung rơi vào 'thung lũng kỳ lạ' về giao diện không hoàn toàn bản địa và tôi không tranh cãi về điều này.
Sử dụng tốt API hành động. Nó cho phép bạn đóng gói tốt hơn các hành động khác nhau mà người dùng của bạn sẽ thực hiện và cho phép bạn kết nối chúng với các phím tắt, phím tăng tốc, nút và các đối tượng đầu vào khác dễ dàng hơn nhiều.
Sử dụng một trình quản lý bố trí thích hợp. GridBagLayout là vô cùng mạnh mẽ, nhưng tôi sẽ đi xa hơn để nói rằng nó là không thể nhầm lẫn mà không có quá nhiều bình luận. Khi tôi chạy các công cụ phân tích mã tĩnh như Sonar trên một ứng dụng GUI cũ hơn mà tôi duy trì, nó luôn chỉ ra số lượng lớn các số ma thuật để bố trí GridBags vừa phải. Tôi đã gặt hái được nhiều thành công với GroupLayout, điều này tránh việc phải chỉ định căn chỉnh hoàn hảo pixel.
Nếu bạn nghĩ rằng bạn cần một JDialog ... có lẽ bạn không nên. Các hộp thoại thật kinh khủng, về mặt trải nghiệm người dùng - ứng dụng này đã quyết định sử dụng chúng cho mọi menu và hình thức, và để thực thi các quy tắc luôn luôn hàng đầu theo những cách kỳ quái. Điều này đã trở thành một cơn ác mộng bảo trì khi chúng ta thực sự cần phải cảnh báo điều gì đó qua menu. Cue bực bội khi nhấp vào các hộp thoại không thể tập trung - và do đó không thể chấp nhận được -.
Sử dụng SwingWorker thay vì cuộn đa luồng của riêng bạn, nếu thích hợp. Thật dễ dàng để mở rộng SwingWorker và thực hiện một số nhiệm vụ lâu dài trong khi cung cấp các cập nhật thường xuyên trở lại GUI. Hãy suy nghĩ tải về một bản cập nhật khách hàng. Nó sẽ xử lý lập lịch xử lý luồng công nhân cho bạn và cho phép bạn xuất bản phần trăm tải xuống trở lại chế độ xem, do đó bạn có thể cập nhật ProgressBar của bạn hoặc những gì có bạn.
Đó là tất cả những gì tôi có thể đề xuất, theo kinh nghiệm hạn chế được thừa nhận của tôi.