Tôi đã tải xuống phông chữ Helvetica từ fontpalace.com (chỉ cần tìm kiếm Helvetica) và đưa nó vào ứng dụng Java của mình bằng Font.createFont(). Nhưng số liệu phông chữ không áp dụng ở đây, tức là kích thước tối thiểu được tính toán của nhãn là sai.
Ứng dụng ví dụ đơn giản hiển thị vấn đề này:
gói phông chữTest;
nhập java.awt.Font;
import java.io.InputStream;
nhập javax.swing.JFrame;
nhập javax.swing.JLabel;
lớp công khai FontTest mở rộng JFrame {
FontTest công khai() {
Nhãn JLabel = new JLabel("Test");
thử {
Dòng đầu vào là = FontTest.class.getResourceAsStream("Helvetica.ttf");
Phông chữ = Font.createFont(Font.TRUETYPE_FONT, is);
label.setFont(font.deriveFont(12f));
} bắt (Ngoại lệ cũ) {
ex.printStackTrace();
}
thêm(nhãn);
đóng gói();
}
public static void main(String[] args) {
FontTest fontTest = new FontTest();
fontTest.setVisible(true);
}
}
Nếu bạn xóa dòng bằng label.setFont(..), lệnh pack() sẽ hoạt động và cửa sổ sẽ thay đổi kích thước để văn bản có thể đọc được. Tuy nhiên, theo cách này, pack() không hoạt động bình thường, khiến nhãn và cửa sổ bị thay đổi kích thước về kích thước rất nhỏ, cắt đứt văn bản. Tôi gặp phải vấn đề này trên Linux và Windows.
Tôi đã bỏ lỡ điều gì à? Có vẻ như một số tệp phông chữ ttf hoạt động còn một số thì không. Nhưng tôi không thể tìm thấy Helvetica đang hoạt động (Helvetica gốc, không phải Neue Helvetica hay bất cứ thứ gì).
Có ý tưởng gì không?
font.deriveFont lấy số float thay vì số nguyên. Hãy thử label.setFont(font.deriveFont(12f));
Tôi là một lập trình viên xuất sắc, rất giỏi!