2010-06-08 28 views
5

Tôi đang xây dựng một ứng dụng trong java swing và tôi đang sử dụng đoạn mã sau để cung cấp cho các giao diện người dùng một hệ điều hành bản địa tìmSwing UI không có hệ điều hành bản địa tìm

try { 
    UIManager.setLookAndFeel(
    UIManager.getSystemLookAndFeelClassName()); 
    } catch (Exception e) { 
    e.printStackTrace(); 
} 

Trên OS X, giao diện là tốt , nhưng trên các cửa sổ (XP và 7) các nút trông như thế này.

alt text http://img710.imageshack.us/img710/8735/buttonsoc.png

Tôi đã sử dụng cùng một mã chính xác này vào các dự án khác và nó hoạt động tốt. Nhưng trong dự án cụ thể này, tôi có một cái nhìn hoàn toàn khác.

Tôi đang sử dụng Java 1.6

Cảm ơn bạn trước!

+0

Bạn đang sử dụng phiên bản Java nào? –

+2

Những gì bạn đã đăng sẽ hoạt động, Bạn đã xem http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html#programmatic chưa? –

+0

@Romain - Đó là nơi tôi nhận được mã và nó hoạt động trước đó. Bây giờ đáng ngạc nhiên của nó cho một cái nhìn khác nhau. Tôi cũng đã thử nghiệm nó trên các hệ thống khác nhau với cùng một kết quả. –

Trả lời

8

Bạn có thể tạo các phần tử GUI của mình trước khi cài đặt L & F không? Nếu bạn đã tạo (ví dụ) các trường hợp JButton và được gọi là các phương thức trên chúng, chúng phân bổ peer UI của chúng - các thay đổi đối với L & F sau đó sẽ không ảnh hưởng đến các cá thể đã tạo.

Điều này sẽ giải thích lý do tại sao nó hoạt động trên máy Mac (L & F mặc định cho Mac trên JVM IIRC của Apple), nhưng không phải trên Windows. Bạn có thể kiểm tra điều này một cách nhanh chóng nếu bạn di chuyển thiết lập L & F trực tiếp vào phương thức chính của bạn làm cuộc gọi đầu tiên (điều này giả sử lớp chính của bạn KHÔNG chứa bất kỳ phiên bản GUI khởi tạo tĩnh nào).

+0

Cảm ơn! Điều đó là vậy đó. Bạn cứu tôi rất nhiều đau đớn. –

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