2008-11-19 28 views
5

Tôi có giao diện "béo" mà nó trở nên khá phức tạp và tôi muốn thêm liên kết từ địa điểm này đến địa điểm khác và thêm các nút quay lại/chuyển tiếp để dễ điều hướng. Dường như với tôi rằng điều này sẽ dễ dàng hơn nếu ứng dụng của tôi là địa chỉ được: mỗi hỗn hợp có thể có URI của nó và các liên kết sẽ sử dụng URI đó.Làm thế nào để bạn tạo một giao diện đồ họa Swing/JFace/SWT GUI?

Có các mẫu thiết kế áp dụng cho vấn đề này không?

Tôi chỉ có thể xem mã nguồn cho Firefox hoặc Eclipse, nhưng đây là những dự án lớn và sẽ mất nhiều thời gian để hiểu về nó, vì vậy tôi hỏi ở đây. Có một ví dụ đơn giản ở đâu đó?

Tất nhiên nó sẽ đơn giản hơn nếu tôi đã xây dựng một ứng dụng web ngay từ đầu, nhưng tôi sẽ không viết lại ứng dụng khổng lồ này ngay từ đầu.

+0

Tất cả các câu trả lời cho đến ngày giả sử có một cấp, nhưng hãy tưởng tượng trình đơn trên cùng dẫn đến "trang", sau đó mỗi trang có thư mục tab lồng nhau. URI cần xác định từng trang và mục tab. –

Trả lời

0

Trong xoay, bạn có thể sử dụng CardLayout. Bạn có thể có mỗi "trang" là một thẻ và tên của thẻ (được chọn khi thêm thẻ vào bố cục) sẽ tương đương với URI bạn muốn.

Ví dụ:

String PAGE_1_KEY = "page 1"; 
String PAGE_2_KEY = "page 2"; 
// as many keys as you need 

JFrame frame = ...; 
frame.setLayout(new CardLayout()); 
frame.add(createPage1(), PAGE_1_KEY); 
frame.add(createPage2(), PAGE_2_KEY); 
// etc. 

Sau đó, trong các nút của bạn người nghe hành động, bạn sẽ gọi

((CardLayout)frame.getLayout()).show(frame, PAGE_1_KEY); // or whichever 
1

Giải pháp của tôi để thực hiện những việc như thế này thường liên quan đến listener pattern. Tóm lại, bạn giảm khớp nối bằng cách cung cấp một cách để gửi và nhận các sự kiện đến và từ các bên quan tâm (vật liệu tổng hợp trong trường hợp này). Điều này khá dễ thực hiện, ngay cả khi trang bị thêm. Bằng cách này, các sự kiện và các bên của bạn có thể thay đổi mà không thay đổi mã phụ thuộc.

1

Bạn có thể tạo một đăng ký "toàn cầu" để ánh xạ các ID duy nhất cho các đối tượng (hoặc có thể là tên lớp). Ví dụ, những đối tượng này có thể là JPanels. Khi người dùng nhấp vào một liên kết hoặc nút, một số Bộ điều khiển sẽ được thông báo bằng phím của trang mới sẽ được hiển thị. Bộ điều khiển này có thể tạo JPanel đó và đặt nó vào khung của ứng dụng.

1

cách tiếp cận cuối cùng của tôi bao gồm quản lý toàn cầu và đăng ký các liên kết. Mỗi phần của giao diện người dùng có thể tự đặt tên cho mình và đăng ký. Người quản lý toàn cầu biết về mỗi người và sau đó sử dụng một số công việc bẩn thỉu để đưa phần này nhìn thấy được. Điều hướng quay lại/chuyển tiếp được thực hiện bởi trình quản lý hoàn tác/làm lại đặc biệt. Mỗi "màn hình" có thể có được trình quản lý điều hướng và đăng ký sự kiện "hoàn tác" của nó. Đó là công việc khó khăn để làm cho nó hoạt động, nhưng tính năng kết quả là khá hữu ích. Chúng tôi đã thảo luận về việc sử dụng một số dịch vụ JNDI đơn giản để định vị và đặt tên các phần giao diện người dùng. Nó có thể hữu ích trong việc liên kết quá.

Các vấn đề liên quan