2011-01-25 56 views
26

Tôi đang tạo một Ứng dụng Java trên Linux sử dụng sytray using Java 6 and Swing. Ứng dụng trông tuyệt vời (sử dụng giao diện hệ thống) nhưng systray trông khủng khiếp. Tôi có nghĩa là menu systray trông giống như widgedts cũ (Motif?). Tôi tự hỏi nếu có một cách để thiết lập một cái nhìn và cảm thấy hoặc một cái gì đó để làm cho khay hệ thống đẹp hơn.Làm cho giao diện java trông đẹp hơn trong Linux

Heres một ảnh chụp màn hình của khay: enter image description here

+1

Tôi khá chắc chắn Motif trông đẹp hơn thế: P –

+2

Tôi đã xóa câu trả lời của mình, vì có vẻ như 'UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName());' không được áp dụng cho các trình đơn này. 1, câu hỏi hay. –

+1

@pst: thực sự? Đó chính xác là những gì tôi nhớ về Motif. –

Trả lời

5

Bạn đã thử JXTrayIcon chưa?

Tôi đã thử nghiệm this demo từ SwingHelper trên Ubuntu 10.10 với Compiz và có vẻ thật tuyệt.

+0

Điều này dường như sử dụng L & F thích hợp (tự kiểm tra) – Petriborg

+0

Không hoạt động chính xác với nhiều màn hình. – user11153

2

Swing sử dụng mô phỏng các widget UI. Nó có một số kiểu hoặc chủ đề bạn có thể áp dụng. Nếu bạn muốn có nhiều kết quả gốc hơn, bạn sẽ cần tìm một bộ công cụ tiện ích con khác. Bạn có một vài tùy chọn:

  1. Nếu nhu cầu của bạn rất cơ bản, bạn có thể hài lòng với AWT là bộ công cụ giao diện người dùng Java gốc. Nó sử dụng các tiện ích gốc, nhưng có rất ít thư viện widget mà nó hỗ trợ.

  2. Nếu bạn muốn vượt xa AWT, hãy xem xét SWT, được duy trì tại eclipse.org. Nó cung cấp cho bạn một thư viện phong phú của các vật dụng, được thực hiện nguyên bản.

+0

Xin lỗi tôi nghĩ tôi đã viết sai câu hỏi, ý tôi là Ứng dụng sử dụng và hiển thị đẹp mắt chỉ là systray hút. –

+0

Tôi đoán rằng bạn đang thiếu thiết lập giao diện cảm giác trong mã systray của bạn ... Có một câu trả lời khác với đoạn mã để biết cách thiết lập giao diện, nhưng dường như đã biến mất. –

+0

Nếu bạn không có câu trả lời hay hơn, tôi khuyên bạn nên thử AWT cho menu systray, trong khi vẫn để phần còn lại của ứng dụng dưới dạng Swing. AWT hoàn toàn có khả năng hiển thị trình đơn này, đã có mặt trong JRE và bạn không phải tranh luận với biz. –

2

Vì Swing sử dụng AWT trên Systray, nếu bạn muốn nhìn tuyệt vời trên systray. Có thể bạn có thể thử với SWT :)

2

Tôi đã viết thư viện của riêng mình cho nó. Dưới đây là liên kết:

http://www.2shared.com/file/sQdjb6aG/jtray.html

Cách sử dụng:

import javax.swing.jtray.*; 

JTrayIcon.initSystemTray(); 
JTrayIcon icon = new JTrayIcon(img, "Tooltip", jpopupmenu); 
icon.displayMessage(null, "Title", "Multiline\nsecondline", 3000); // 3 seconds 

Thư viện sử dụng một vài thủ thuật bẩn, như vậy có lẽ nó có thể không hoạt động trên bất kỳ nền tảng Linux tốt như trong Ubuntu. Nó cũng hoạt động với Windows và OSX.

+0

Tôi sẽ thử công việc này và sớm cung cấp phản hồi ... –

1

Tôi đã không thử nó bản thân mình, nhưng nếu bạn đang sử dụng Java 6 Update 10 hoặc mới hơn, bạn có thể sử dụng giao diện Nimbus mới và cảm thấy ?:

Using Nimbus LAF

Tôi đã nghe nói về biểu tượng khay sử dụng "JPopupMenu" trên Ubuntu, trong đó sử dụng giao diện Nimbus và cảm nhận, vì vậy đây có thể là lựa chọn tốt nhất của bạn:

Using JPopupMenu in TrayIcon

Từ những gì tôi đã nhìn thấy, sử dụng JPopupMenu mình sẽ là một cải tiến lớn - kết hợp với Nimbus nó sẽ thật tuyệt vời.

1

Một cách nhanh chóng & cách giải quyết dơ bẩn: Tạo một JDialog chưa được trang trí, thêm một JPopupMenu cho nó và làm cho nó hiển thị từ người nghe chuột của bạn về TrayIcon như bạn muốn.

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