ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 使JTextArea显示固定宽度的字体而不使用抗锯齿

2019-09-29 06:01:51  阅读:221  来源: 互联网

标签:jtextarea java fonts swing cross-platform


有人知道如何让JTextArea显示固定大小
所有平台上的字体?

我想创建一个具有保存/打开功能的简单代码编辑器,
这很简单,但我想得到字体
固定尺寸,最好是快递.

问题是,快递新品显然是专有的,而不是
只是在许多系统上没有默认安装,但在大多数系统上
现代系统,它设置为cleartype是默认的,这使得
它看起来像垃圾.

我很想用update-render-paint制作我自己的JPanel
重新发明JTextArea,并将字体保存为固定大小的位图,但是
这种方法显得很愚蠢,非常耗时.

我想在项目中包含一个免费的固定大小的字体
在所有平台上使用该字体,这似乎是可能的.然而,
现代系统似乎强制平滑所有字体,我想
喜欢阻止它做.

可悲的是,似乎Swing自动遵守系统首选项
所以在不破坏用户设置的情况下,它似乎是不行的.

简而言之,有没有办法让JTextArea显示固定宽度
字体和禁用字体平滑/抗锯齿(或至少切换),或
使用挥杆这个任务是不可能的?

提前谢谢!

解决方法:

您可以使用逻辑字体“monospaced”.虽然它保证所有字符的字体大小相同,但在所有平台上都不一样.

import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class TestTextArea {

    private void initUI() {
        JFrame frame = new JFrame("test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextArea textArea = new JTextArea(24, 80);
        textArea.setFont(new Font("monospaced", Font.PLAIN, 12));
        frame.add(new JScrollPane(textArea));
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TestTextArea().initUI();
            }
        });

    }

}

或者,您可以查找满足您需求的“免费”字体,将该字体嵌入代码中并使用java.awt.Font.createFont(int,InputStream)加载它.

标签:jtextarea,java,fonts,swing,cross-platform
来源: https://codeday.me/bug/20190929/1830656.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有