2009-04-06 32 views
8

Tôi đang rối tung với DefaultStyledDocument và đang cố gắng tìm ra đúng cách để đặt kiểu cho phông chữ đơn cách thích hợp. Bằng cách "đúng đắn" Tôi có nghĩa là phông chữ được lựa chọn là: (? Là có một cách tiêu chuẩn để làm điều này trong Java)đúng cách để chọn phông chữ đơn cách trong Swing

  1. Một font chữ đơn cách tồn tại trên máy tính của người dùng
  2. Một phông chữ được xác định bởi sở thích của người dùng
  3. Nếu không có phông chữ được chỉ định, phông chữ sẽ rơi trở lại phông chữ đơn cách chuẩn ("Monospaced").

này hoạt động:

StyleConstants.setFontFamily(mainStyle, "Monospaced"); 

và điều này cũng làm việc:

StyleConstants.setFontFamily(mainStyle, "Lucida Console"); 

nhưng tôi dường như không thể tìm ra cách để nói nếu họ phông chữ trong câu hỏi cả hai tồn tại trên máy của người dùng (không có giá trị trả về cho setFontFamily) và là một phông chữ đơn cách. Nếu tôi sử dụng "Lucida Consoleq" có vẻ như nó sử dụng phông chữ mặc định.

Trả lời

2

Tôi nghĩ rằng bạn muốn điều này

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 

Xem javadoc

+1

tôi có phải liệt kê tất cả chúng không? không có cách nào để kiểm tra xem liệu có tồn tại không? –

3

Xem javadoc cho java.awt.Font. Có vẻ như bạn có thể sử dụng phương thức public static Font decode(String str) để hoàn thành những gì bạn muốn. Đoạn cuối cùng của javadoc cho phương pháp này cho biết:

Kích thước mặc định là 12 và kiểu mặc định là PLAIN. Nếu str không chỉ định kích thước hợp lệ, phông chữ trả về có kích thước là 12. Nếu str không chỉ định kiểu hợp lệ, phông chữ trả về có kiểu PLAIN. Nếu bạn làm không chỉ định tên phông hợp lệ trong đối số str , phương thức này sẽ trả lại một phông chữ có họ "Dialog". Để xác định tên họ phông chữ có sẵn trên hệ thống của bạn, hãy sử dụng phương thức GraphicsEnvironment.getAvailableFontFamilyNames() . Nếu str là null, một Phông chữ mới là được trả về với họ là "Hộp thoại", kích thước 12 và kiểu PLAIN .

Nếu họ phông chữ bạn đang tìm kiếm không tồn tại, bạn sẽ nhận được "Hộp thoại" được trả lại. Miễn là bạn không nhận được điều đó như một giá trị trả về, họ phông chữ tồn tại.

3

Monospaced là tên ảo (như Dialog) mà Java sẽ ánh xạ tới phông chữ cố định chiều rộng cố định của hệ thống.

+1

Nhưng tôi không muốn mặc định, vì nó trông khá tệ hại. Tôi muốn quay trở lại mặc định nếu tôi không thể tìm thấy cái tôi muốn. –

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