java - Graphics2D.drawString 中的换行符问题

标签 java string newline graphics2d

g2Graphics2D 类的实例。我希望能够绘制多行文本,但这需要换行符。以下代码在一行中呈现。

String newline = System.getProperty("line.separator");
g2.drawString("part1\r\n" + newline + "part2", x, y);

最佳答案

drawString 方法不处理换行符。

您必须自己将字符串拆分为换行符,并以适当的垂直偏移量一根一根地绘制线条:

void drawString(Graphics g, String text, int x, int y) {
    for (String line : text.split("\n"))
        g.drawString(line, x, y += g.getFontMetrics().getHeight());
}
<小时/>

这是一个完整的示例,可以让您了解这个想法:

import java.awt.*;

public class TestComponent extends JPanel {

    private void drawString(Graphics g, String text, int x, int y) {
        for (String line : text.split("\n"))
            g.drawString(line, x, y += g.getFontMetrics().getHeight());
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        drawString(g, "hello\nworld", 20, 20);
        g.setFont(g.getFont().deriveFont(20f));
        drawString(g, "part1\npart2", 120, 120);
    }

    public static void main(String s[]) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new TestComponent());
        f.setSize(220, 220);
        f.setVisible(true);
    }
}

给出以下结果:

enter image description here

关于java - Graphics2D.drawString 中的换行符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103420/

相关文章:

java - 查找单向链表的倒数第 K 个元素

java - 如何为 Google Cloud SQL 配置 Java Hibernate?

html - div 不使用 clear 或 br 分隔行

Git:如何重新规范化所有修订版中所有文件的行尾?

java : Send Email from Server which is connected in LAN but Not in Internet

java - 使用java正则表达式查找没有宽度或高度属性的img标签

javascript - 为什么 ''(空字符串)会渗透所有字符串?

c++ - 如何获取 QOpenGLContext 等常见 Qt5 类型的字符串表示形式?

c - C 中的指针整数字符警告

python - 如何在 Gtk TextView 中添加新行?