当前位置: 首页 > 面试题库 >

使JTextArea在不进行抗锯齿的情况下显示固定宽度的字体

杜海
2023-03-14
问题内容

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

我想创建一个具有保存/打开功能的简单代码编辑器,这很简单,但是我想将字体设置为固定大小,最好是速写。

问题在于,courier new显然是专有的,不仅在许多系统上默认没有安装它,而且在大多数现代系统上,它都默认设置为cleartype,这使其看起来像垃圾。

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

我想在项目中包含免费的固定大小字体,并在所有平台上使用该字体,这似乎是可能的。但是,现代系统似乎强制平滑所有字体,我想防止这样做。

可悲的是,Swing似乎自动遵守系统偏好设置,因此在不破坏用户设置的情况下,这似乎是行不通的。

简而言之,有没有办法让JTextArea显示固定宽度的字体并禁用字体平滑/抗锯齿(或至少切换),还是使用swing无法完成此任务?

提前谢谢!


问题答案:

您可以使用逻辑字体“等宽”。尽管它保证所有字符的字体大小都相同,但在所有平台上都不会相同。

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();
            }
        });

    }

}

或者,您可以查找满足您需要的“免费”字体,将其与html" target="_blank">代码一起嵌入并通过加载java.awt.Font.createFont(int, InputStream)



 类似资料:
  • 在学习渲染的旅途中,你可能会时不时遇到模型边缘有锯齿的情况。这些锯齿边缘(Jagged Edges)的产生和光栅器将顶点数据转化为片段的方式有关。在下面的例子中,你可以看到,我们只是绘制了一个简单的立方体,你就能注意到它存在锯齿边缘了: 可能不是非常明显,但如果你离近仔细观察立方体的边缘,你就应该能够看到锯齿状的图案。如果放大的话,你会看到下面的图案: 这很明显不是我们想要在最终程序中所实现的效果

  • 问题内容: 所以我最近遇到了这个问题: 我很好奇:有没有办法用较小的图像来做这种事情?我的意思是,这是像素艺术,而不是使用每个像素四倍的图像而不是我们用代码来拉伸它们吗?因此,我开始尝试实现这一目标。 我尝试了CSS,Javascript甚至HTML,但没有一个起作用。它们都变得非常模糊,这使我想到了一个问题:您可以在浏览器中拉伸图像而无需任何抗锯齿功能吗? 我愿意接受任何建议,无论是使用画布,j

  • 必须使用可变宽度字体(因为它看起来很漂亮)。 必须以特定字符宽度换行文本(以匹配文本UI) 一个简单的连击实现,是吗?修改UI以提供我自己版本的包装视图(它继承自WrappedPlainView),并重写calculateBreakPosition()以提供我想要的包装行为。 只是看起来不那么简单。正在忽略由可变呈现宽度派生的问题...我发现calculateBreakPosition()没有被调

  • 问题内容: 在swing应用程序中,我使用来自定义文本。这是一个示例: 在同一应用中,一个 文本http://img525.imageshack.us/img525/4928/drawstringsample.jpg ,我正在使用渲染文本。这是一个示例: 替代文本http://img28.imageshack.us/img28/1134/jtextpanesample.jpg 您能注意到较低的样本

  • 问题内容: 最近,一个客户抱怨IE6中系统字体的出现。基本上,问题是IE6不支持字体平滑/抗锯齿(我知道您可以在OS设置中将其打开)。但是有人扔掉了这个宝石: “您可以使用pt而不是px在CSS中强制使用字体抗锯齿。” 我在各种浏览器中进行了快速POC,发现没有区别。 这听起来像是Web开发人员的都市神话,我的感觉是BS。有没有人遇到过? 问题答案: 不,作为Web开发人员,实际上没有任何方法可以

  • 问题内容: 我们如何在CSS中应用类似于Photoshop的字体抗锯齿功能,例如清晰,锐利,强壮,平滑? 所有浏览器都支持这些吗? 问题答案: 主席先生,你在这里:-) 1个 2