gpt4 book ai didi

Java 以一定长度(以像素为单位)分割字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:36 27 4
gpt4 key购买 nike

我需要使用 java.awt.Graphics 分割将要显示在框中的字符串。问题是,我需要当字符串达到矩形宽度(以像素为单位)时自动分割字符串。例如,

"This is an example string. What goes into the string does not matter" 
[----------------------------------------] <-- Hypothetical width of box/rect

我需要将字符串拆分为“goes”和“into”,这样我就可以将其余文本放在新行中:

"This is an example string. What goes
into the string does not matter"
[----------------------------------------] <-- Hypothetical width of box/rect

我知道如何获取字符串的宽度,但我不知道如何拆分它。

最佳答案

我知道我已经太晚了才说明我是否弄清楚了,但我在没有第 3 方 API 的情况下设法自己做到了。它不是非常有效,因为如果字符串长度太长,最后一个单词就会被切断。 (如果你愿意,你可以查看代码,但我无法再解释它是如何工作的,因为我已经很长时间没有看过它了。

public class ConsoleLog {
private static Color c = Color.WHITE;
public static Color getC() {
return c;
}

public static void setC(Color c) {
ConsoleLog.c = c;
}

private static int pos;
private static List<String[]> logs;
private static List<Point>linesPos = new ArrayList<Point>();
private static Rectangle r = Main.Main.screenSize;
public static void log(List <String[]> logs, Graphics g) {
g.setColor(c);
ConsoleLog.logs = logs;
splitConsole(g);
}

public static void splitConsole(Graphics g){
pos = 0;
for(int i = 0; i < (r.height / 2) / 10 - 10; i++) {
linesPos.add(new Point(10, (i * (r.height / (50 + 3) + 5) + 15)));
}
for(int i = 0; i < logs.size(); i++) {
for(int ie = 0; ie < logs.get(i).length || pos < logs.get(i).length; ie++) {
g.drawString(logs.get(i)[ie], linesPos.get(pos).x, linesPos.get(pos).y);
pos++;
}
}
}

需要明确的是,我正在开发一个小型游戏引擎,并决定废弃它,因为它变得太困惑、效率低下,并且是围绕点击游戏构建的。我正在开发第二个,它将能够创建用户想要的任何 2D 游戏,并且它非常用户友好。它的第一个版本即将准备就绪,我很高兴看到它可以制作出什么!

关于Java 以一定长度(以像素为单位)分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55575174/

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