gpt4 book ai didi

java - 带矩形边框的 drawString

转载 作者:行者123 更新时间:2023-11-29 03:47:51 24 4
gpt4 key购买 nike

我想使用 Graphics 和字符串外的矩形边框绘制字符串。

这是我已经在做的:

     public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
FontMetrics fontMetrics = g2d.getFontMetrics();
String str = "aString Test";

int width = fontMetrics.stringWidth(str);
int height = fontMetrics.getHeight();

int x = 100;
int y = 100;

// Draw String
g2d.drawString(str, x, y);
// Draw Rectangle Border based on the string length & width
g2d.drawRect(x - 2, y - height + 2, width + 4, height);
}

我的问题是,我想用换行符 ("\n") 绘制字符串,外边有矩形边框:

这是新行的代码:

     public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
FontMetrics fontMetrics = g2d.getFontMetrics();
String str = "aString\nTest";

int width = fontMetrics.stringWidth(str);
int height = fontMetrics.getHeight();

int x = 100;
int y = 100;

// Drawing string per line
for (String line : str.split("\n")) {
g2d.drawString(line, x, y += g.getFontMetrics().getHeight());
}
}

谁能帮我解决这个问题?感谢您的帮助和建议...

最终代码

        int numberOfLines = 0;

for (String line : str.split("\n")) {
if(numberOfLines == 0)
g2d.drawString(line, x, y);
else
g2d.drawString(line, x, y += g.getFontMetrics().getHeight());
numberOfLines++;
}

g2d.drawRect(x - 2, y - height * numberOfLines + 2, width + 4, height * numberOfLines);

最佳答案

如果我没理解错的话,你的问题是矩形的高度。

尝试记录你有多少行,例如:

int numberOfLines=0;

for (String line : str.split("\n")) {
g2d.drawString(line, x , y + (numberOfLines * height));
numberOfLines++;
}

g2d.drawRect(x - 2, y - height + 2, width + 4, height * numberOfLines);

这也改变了计算绘制字符串的 y 值的方式。

这样的东西行得通吗?

关于java - 带矩形边框的 drawString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com