Java 如何创建具有不同颜色的文本
我目前使用这一行:Java 如何创建具有不同颜色的文本,java,slick2d,Java,Slick2d,我目前使用这一行: font.drawString(Display.getWidth()/2 - offset, height, "Hi, Stackoverflow!", Color.yellow); 然而,这只允许我在每条信息中使用一种颜色 鉴于,我希望有这样一句话: font.drawString(Display.getWidth()/2 - offset, height, BLUE TEXT HERE + "Team A score: " + score + RED TEXT HERE
font.drawString(Display.getWidth()/2 - offset, height, "Hi, Stackoverflow!", Color.yellow);
然而,这只允许我在每条信息中使用一种颜色
鉴于,我希望有这样一句话:
font.drawString(Display.getWidth()/2 - offset, height, BLUE TEXT HERE + "Team A score: " + score + RED TEXT HERE + " || " + YELLOW TEXT HERE + "Team B score: " + score, Color.yellow);
变量font
的类型为UnicodeFont
@SuppressWarnings("unchecked")
static void setUpFonts() {
java.awt.Font awtFont = new java.awt.Font("Times New Roman", java.awt.Font.BOLD, 18);
font = new UnicodeFont(awtFont);
font.getEffects().add(new ColorEffect(java.awt.Color.white));
font.addAsciiGlyphs();
try {
font.loadGlyphs();
} catch (SlickException e) {
e.printStackTrace();
cleanUp();
}
}
如果有一个不需要多条消息的解决方案就好了。不,没有这样的方法。 您必须将其拆分为:
g.setColor(Color.blue);
g.drawString("Hi,", 50, 50);
g.setColor(Color.red);
g.drawString("Stackoverflow!", 50 + font.getWidth("Hi, "), 50);
作为一种解决方法,您可以编写一个帮助器方法,如果您更经常需要它,它可以执行偏移的所有计算和处理。比如:
public void drawString(Graphics g, int x, int y, Object... args)
{
org.newdawn.slick.Font font = g.getFont();
int currentOffset = x;
int startOffset = x;
for (int i = 0; i < args.length / 2; i++)
{
g.setColor((Color) args[i * 2]);
g.drawString((String) (args[i * 2 + 1]), currentOffset, y);
currentOffset += font.getWidth(((String) (args[i * 2 + 1])));
if (((String) (args[i * 2 + 1])).contains("\n"))
{
currentOffset = startOffset;
}
}
}
这根g.拉丝是从哪里来的??什么是“图形”?@Joehot200 Graphics是Slick2D中的图形上下文,g是它的一个实例。g、 drawString(..)是图形中的一种方法,它使用当前字体在指定位置绘制字符串。
drawString(g, 10, 10, "Stack", Color.red, "Overflow", Color.green, "!", Color.yellow);