Có ai biết cách để JTextArea hiển thị kích thước cố định phông chữ trên tất cả các nền tảng không?Nhận JTextArea hiển thị phông chữ có chiều rộng cố định mà không cần chống răng cưa
Tôi muốn tạo một trình soạn thảo mã đơn giản với chức năng lưu/mở, đơn giản, nhưng tôi muốn nhận phông chữ là kích thước cố định, tốt nhất là chuyển phát nhanh mới.
Vấn đề là chuyển phát nhanh mới là độc quyền rõ ràng, và không duy nhất là nó không được cài đặt theo mặc định trên nhiều hệ thống, nhưng trên hầu hết các hệ thống hiện đại, nó được thiết lập để ClearType được mặc định, mà làm cho nó trông giống như rác .
Tôi bị cám dỗ tạo JPanel của riêng mình bằng bản cập nhật và vẽ tạo lại JTextArea và lưu phông chữ dưới dạng bitmap có kích thước cố định, nhưng cách tiếp cận này có vẻ ngớ ngẩn và tốn thời gian.
Tôi muốn bao gồm phông chữ có kích thước cố định miễn phí cho dự án và sử dụng phông chữ đó trên tất cả các nền tảng, có thể xuất hiện. Tuy nhiên, các hệ thống hiện đại dường như buộc tất cả các phông chữ trơn tru, mà tôi sẽ muốn ngăn không cho nó hoạt động.
Đáng buồn thay, có vẻ như Swing tự động tuân theo tùy chọn hệ thống vì vậy mà không phá hủy cài đặt của người dùng, có vẻ như không có gì xảy ra. Vì vậy, trong ngắn hạn, là có một cách để có được JTextArea để hiển thị một phông chữ cố định chiều rộng và tắt font làm mịn/antialiasing (hoặc ít nhất là chuyển đổi), hoặc là nhiệm vụ này không thể sử dụng swing?
Cảm ơn trước!
Cảm ơn, câu trả lời cho câu hỏi đó, nhưng tôi vẫn tò mò nếu tôi có thể đảm bảo rằng phông chữ được bảo vệ đơn nhất sẽ không bị chống răng cưa. Điều này có thể không? – Dmitry
@ Dmitry Có một số cách để tắt tính năng chống răng cưa: 1) ['System.setProperty (" awt.useSystemAAFontSettings "," false ");'] (http://docs.oracle.com/javase/6/docs /technotes/guides/2d/flags.html#aaFonts) 'System.property (" swing.aatext "," false "); 2) Bạn có thể đặt RenderingHints trên đối tượng 'Graphics' của phương thức' paintComponent' để tắt TEXT_ANTI_ALIASING ('((Graphics2D) g) .setRenderingHint (RenderingHints.KEY_TEXT_ANTIALIASING, Boolean.FALSE); 'nhưng bạn sẽ không có một đảm bảo tuyệt đối rằng ai đó sẽ không thay đổi điều đó sau đó. –
Tôi không lo lắng về việc thay đổi mật khẩu, tôi lo lắng về các cài đặt mặc định :). Cảm ơn rất nhiều! – Dmitry