2009-06-25 87 views

Trả lời

14

Lớp Font cho phép bạn chỉ định kích thước phông chữ.

Vì vậy, để tạo ra một phông chữ bạn làm điều gì đó như thế này:

Font f = new Font("serif", Font.PLAIN, fontSize); 

Tham số fontSize sẽ xác định kích thước của Font của bạn.

Bạn thực sự không thể thay đổi kích thước của đối tượng Phông chữ hiện có. Cách tốt nhất để đạt được hiệu quả tương tự là sử dụng phương pháp deriveFont(size) để tạo một số mới gần giống hệt nhau Font có kích thước khác.

Font biggerFont = existingFont.deriveFont(bigNumber); 
+1

Lưu ý: bạn cần xác định rằng 'bigNumber' là một phao, nếu không bạn sẽ kích hoạt quá tải' deriveFont (int style) '. I E. 'existingFont.deriveFont (100f);'. –

+0

sẽ phương pháp này "deriveFont (kích thước)" tạo đối tượng phông chữ mới? – JAVA

7

Bạn có thể lấy được một chữ mới với kích thước khác nhau bằng cách sử dụng như sau:

Font original = // some font 
Font bigger = original.deriveFont(newSize); 

đâu newSize là một float, không một int. Đây cũng là tài liệu trong javadoc cho Font như những người khác đã chỉ ra

+1

+1. @ Raji: Ngoài ra, nếu bạn muốn tăng kích thước phông chữ trên các thành phần GUI theo cách này, bạn có thể làm điều đó trong khi vẫn giữ lại bộ phông chữ và định dạng. Ví dụ: myLabel.setFont (myLabel.getFont(). DeriveFont (20)); Sau đó bạn có thể thực hiện một thuật toán đệ quy thực hiện thao tác này trên toàn bộ hệ thống phân cấp thành phần. Chỉ là một ý tưởng. – akarnokd

+2

newSize _must_ là một 'float', không phải là' int'. Xem [deriveFont (float)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (float)) và trả lời từ Avrom. [deriveFont (int)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (int)) áp dụng một _style_ (được mã hóa dưới dạng giá trị 'int') vào phông chữ. –

6

Giả sử rằng bạn muốn thay đổi kích thước font chữ trên cụ thể JLabel, bạn có thể làm:

label.setFont(label.getFont().deriveFont(newSize)); 

Hãy chắc chắn rằng newSize là một float không phải là int.

5

bạn có thể thiết lập thuộc tính swing.plaf.metal.controlFont khi chạy bạn ứng dụng:

java -Dswing.plaf.metal.controlFont = Dialog-50 YourMainClass

trong ví dụ này, bạn đặt phông chữ mặc định là "Hộp thoại" có kích thước 50.

+0

+1 cho tham số Swing – akarnokd

7

Tôi giải thích câu hỏi này là "Làm cách nào để tăng kích thước phông chữ cho Swing trên bảng." Tôi không biết về bất kỳ cách tích hợp nào để thực hiện việc này, nhưng bạn có thể tự làm điều đó bằng cách sửa đổi các giá trị trong lớp UIManager khi khởi động trước khi bạn tạo bất kỳ thành phần Swing nào.

Tôi làm điều này bằng cách có thông số được chuyển vào ứng dụng mà tôi sử dụng làm hệ số. Nếu tôi vượt qua 150, nó sẽ nhân tất cả các phông chữ hiện có lên 150%. Mã như sau

public static void initializeFontSize() { 
    String fontSizeParam = System.getProperty("myapp.fontSize"); 
    if (fontSizeParam != null) { 
     float multiplier = Integer.parseInt(fontSizeParam)/100.0f; 
     UIDefaults defaults = UIManager.getDefaults(); 
     int i = 0; 
     for (Enumeration e = defaults.keys(); e.hasMoreElements(); i++) { 
      Object key = e.nextElement(); 
      Object value = defaults.get(key); 
      if (value instanceof Font) { 
       Font font = (Font) value; 
       int newSize = Math.round(font.getSize() * multiplier); 
       if (value instanceof FontUIResource) { 
        defaults.put(key, new FontUIResource(font.getName(), font.getStyle(), newSize)); 
       } else { 
        defaults.put(key, new Font(font.getName(), font.getStyle(), newSize)); 
       } 
      } 
     } 
    } 
} 
1

Câu hỏi là quá mơ hồ để đưa ra câu trả lời hay. Nhưng tôi nghĩ bạn muốn tăng kích thước phông chữ một cách có hệ thống trong ứng dụng của mình.

Khuôn mặt phông chữ, kiểu và kích cỡ trong ứng dụng Java Swing được điều khiển thông qua cơ chế LookAndFeel. Bạn cần thay đổi phông chữ trong giao diện nếu bạn muốn thay đổi áp dụng cho tất cả các thành phần Swing của một loại đã cho.

Hãy xem ví dụ UIManager.

Dưới đây là làm thế nào để thay đổi font chữ trên toàn cầu đối với một số thành phần UI:

UIManager.put("Label.font", new FontUIResource(new Font("Dialog", Font.PLAIN, 10))); 
    UIManager.put("Button.font", new FontUIResource(new Font("Dialog", Font.BOLD, 10))); 
    UIManager.put("TextField.font", new FontUIResource(new Font("Dialog", Font.PLAIN, 10))); 
Các vấn đề liên quan