Java 图形无法更改字体

标签 java graphics word-wrap

我正在尝试使用 Graphics 对象进行自定义绘画。 我想以自动换行样式绘制文本,因此我使用了在本页某处找到的一些示例代码。

我的问题是我无法以任何方式更改字体大小。 请帮助我,我在下面附上了可执行源代码。

谢谢

克里斯

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextLayout;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;

import javax.swing.JFrame;

public class JavaFontProblem extends JFrame {

    public JavaFontProblem() {
        setSize(new Dimension(1024, 768));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void paint(Graphics g) {

        Graphics2D g2d = (Graphics2D) g;
        String longtext = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";

        g2d.setColor(Color.BLACK);
        g2d.setFont(new Font("Verdana", Font.PLAIN, 250));

        AttributedString atString = new AttributedString(longtext);
        AttributedCharacterIterator iterator = atString.getIterator();

        LineBreakMeasurer measurer = new LineBreakMeasurer(iterator, g2d
                .getFontRenderContext());
        measurer.setPosition(iterator.getBeginIndex());

        int m_width = 500;

        float x = 50, y = 50;
        while (measurer.getPosition() < iterator.getEndIndex()) {
            TextLayout layout = measurer.nextLayout(m_width);

            y += layout.getAscent();
            float dx = layout.isLeftToRight() ? 0 : m_width
                    - layout.getAdvance();

            layout.draw(g2d, x + dx, y);
            y += layout.getDescent() + layout.getLeading();
        }

    }

    public static void main(String[] args) {
        new JavaFontProblem().setVisible(true);
    }

}

最佳答案

atString.addAttribute(TextAttribute.FONT, myFont, 0, atString.length());

关于Java 图形无法更改字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/757347/

相关文章:

c++ - 在二维数组中创建线性渐变

html - 在 <table> 父元素上使用 "overflow: auto"会导致第一列中令人讨厌的自动换行

java - 在 VSCode 中使用 Kotlin

java - 对于以下代码片段,我需要编写 JUnit 测试用例的帮助。任何解决方案或代码提示将不胜感激

java - 如何知道一个点是否在android中的多边形内部

html - 即使存在空格,textarea 中的粘贴文本也会溢出

internet-explorer - 当空格后跟标点符号时 IE 不会换行

java - 嵌入式 Derby 数据库是否放在 Java jar 中?

java - 如何让数组列表在另一个类java中调用

animation - Haskell Gloss 没有动画