2009-10-19 22 views
11

Có thể sử dụng Java để tạo các ứng dụng trông có nguồn gốc trên Windows không? Tôi không quan tâm nếu giải pháp là di động hay không, bởi vì tôi chỉ có kế hoạch nhắm mục tiêu người dùng windows. Tôi đang sử dụng Scala nếu điều đó quan trọng.Bắt các ứng dụng java để tìm kiếm bản địa trên các cửa sổ - làm thế nào?

Xin lỗi vì thiếu chi tiết, nhưng tôi chưa bao giờ sử dụng Java trước đây vì vậy tôi thậm chí không chắc chắn nếu điều này là có thể.

+2

Phát triển chúng trong .NET? Xin lỗi không thể cưỡng lại. ;) – dkackman

+1

Tôi đồng ý rằng các điều khiển gốc là quan trọng.Mỗi ứng dụng chính thống thành công đều đã sử dụng các điều khiển gốc. Bạn có hai lựa chọn (1) sử dụng một bộ tiện ích như Swing cố gắng giả mạo một cái nhìn bản địa. Điều này không bao giờ hoàn toàn hoạt động, đôi khi nó hoàn toàn khủng khiếp. (2) sử dụng một bộ tiện ích như SWT là một trình bao bọc Java xung quanh (chủ yếu) các tiện ích gốc. Điều này hoạt động hoàn hảo. Việc thiếu một gói phần mềm như SWT trong phân phối lõi là những gì làm tổn hại Java trên máy khách. (Có, Java là một thành công lớn trên máy chủ và một số máy để bàn doanh nghiệp, tôi biết.) – DigitalRoss

Trả lời

23
try { 
    // Set the Look and Feel of the application to the operating 
    // system's look and feel. 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
} 
catch (ClassNotFoundException e) { 
} 
catch (InstantiationException e) { 
} 
catch (IllegalAccessException e) { 
} 
catch (UnsupportedLookAndFeelException e) { 
} 

Điều đó sẽ đặt Giao diện cảm nhận cho hệ thống. Bạn sẽ làm điều này trước bất kỳ mã GUI nào của bạn. Ví dụ: trong phương thức main của bạn.

Nếu bạn muốn tìm hiểu thêm về Giao diện, tôi sẽ xem Java Tutorial on them, as suggested by carwash.

+0

Ngụ ý trong câu trả lời này là * sử dụng Swing để điều khiển *. Đây là sự khôn ngoan Java thông thường và gói Sun chính thức, và không ai có thể đổ lỗi cho việc tư vấn cho nó. Tuy nhiên, bạn sẽ không được kiểm soát bản địa và những người giả mạo sẽ không đánh lừa bất cứ ai. Sun đã chấp nhận SWT khi Eclipse cung cấp cho họ miễn phí. Vì vậy, Sun chỉ cung cấp các widget (Swing và AWT) không thích hợp cho các ứng dụng máy tính để bàn, và kết quả là chúng hầu như không có gì và dường như đã loại bỏ Swing khác ngoài việc giữ cho nó đi cùng. – DigitalRoss

+1

Tôi sử dụng Swing và tôi bị "đánh lừa bởi những điều khiển giả". Giải thích cách Swing không nhìn và hành động như Windows nếu bạn sử dụng mã này. –

+0

Nó hút trên máy Mac, khá tệ, trên thực tế. – AlBlue

0

Có, Java có giao diện và cảm giác bản địa có sẵn trên Windows. Tra cứu cách thay đổi giao diện của bạn và điều đó sẽ đưa bạn đi đúng hướng.

0

Bạn muốn làm điều gì đó như: (. Trong đó tất nhiên chỉ hoạt động trên Windows)

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 

Kết quả trông và cảm thấy hợp lý bản địa. Thông tin khác ví dụ: here.

+0

Điều này sẽ chỉ hoạt động trên Windows. Nếu bạn đang ở trên một hệ thống khác, một 'UnsupportedLookAndFeelException' sẽ bị ném. –

+0

Lưu ý rằng OP cho biết "Tôi chỉ có kế hoạch nhắm mục tiêu người dùng windows". Và vâng, tôi đã bỏ qua thử thách để tập trung vào vấn đề chính. (Đó là một ngoại lệ kiểm tra để trình biên dịch sẽ nhắc nhở bất cứ ai quên nó từ mã thực :) – Jonik

2

Bạn phải sử dụng Windows giao diện.

Bạn có thể xác định nó tại cửa sổ dòng lệnh:

java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel MyApp 

Hoặc trong mã

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

Dưới đây là chi tiết: How to set the look and feel

9

Mọi người khác đã đăng những thứ Swing, vì vậy tôi sẽ pla y Devil's ủng hộ và đề cập đến SWT.

SWT là bộ công cụ tiện ích được tạo bởi nền tảng Eclipse. Nó là một trình bao bọc mỏng trên GUI gốc của hệ thống ... cho Windows, OSX và các hương vị khác nhau của * nix (Linux, AIX, BSDs ?, v.v ...).

Đây là tuyến đường đối diện mà số JFC/Swing của Mặt trời lấy, tạo thành các thành phần riêng của nó.

+0

Tôi tò mò về lợi thế của việc sử dụng SWT trên Swing là, bên ngoài phát triển RCP Eclipse. Tôi tin rằng hầu hết các hệ điều hành được bao phủ bởi UIManager.getSystemLookAndFeelClassName(), vậy tại sao tôi muốn mang theo một thư viện bên ngoài cho mục đích này? –

+3

Tôi chưa thực hiện nhiều phát triển ứng dụng dành cho máy tính để bàn, nhưng lợi thế chính là sử dụng thư viện hiển thị gốc của hệ điều hành hơn là vẽ các thành phần riêng của nó như Swing. – Powerlord

+2

SWT cao cấp và Swing tốt ở đây: http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Libraries.htm – Smalltown2k

2

Thật kỳ lạ chưa có ai đề cập đến JGoodies.

Các JGoodies của Windows nhìn & cảm giác tập trung vào một mô phỏng chính xác trên Windows 95/98/NT/ME/2000 trong các lĩnh vực sau: menu, biểu tượng, màu sắc, đường viền, phông chữ, cỡ chữ, insets, và phụ tùng kích thước. Nó tôn vinh độ phân giải màn hình (96dpi so với 120 dpi) để điều chỉnh kích thước, insets và kích thước widget. (Source)

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