我有一个AttributedString对象数组。我使用它们,以便我可以将字符串的一部分设置为一种颜色,将字符串的其余部分设置为另一种颜色。
但是,我注意到,当图形对象在AttributedString.getIterator()上使用drawString()方法时,代码中的所有内容都会停止。代码在第一个代码停止,然后正常继续。
我也有理由相信getIterator()方法不会降低它的速度。我已经尝试创建一个AttributedCharacterIterators数组,它从AttributedString数组获取迭代器,而其他资源正在加载并使用该数组来绘制字符串。
如果有帮助,我使用的是Mac OSX El Capitan 10.11.6此外,我使用的已安装的JRE是Java SE 8 [1.8.0_65]。
以下是相关代码:
private static AttributedString[] exampleList = new AttributedString[6];
// In the main method
exampleList[0] = new AttributedString("Example String Zero");
exampleList[0].addAttribute(TextAttribute.FOREGROUND, Color.BLUE, 0, 2);
exampleList[1] = new AttributedString("Example String One");
exampleList[1].addAttribute(TextAttribute.FOREGROUND, Color.BLUE, 0, 5);
exampleList[2] = new AttributedString("Example String Two");
exampleList[2].addAttribute(TextAttribute.FOREGROUND, Color.BLUE, 0, 3);
exampleList[3] = new AttributedString("Example String Three");
exampleList[3].addAttribute(TextAttribute.FOREGROUND, Color.BLUE, 0, 4);
exampleList[4] = new AttributedString("Example String Four");
exampleList[4].addAttribute(TextAttribute.FOREGROUND, Color.BLUE, 0, 5);
exampleList[5] = new AttributedString("Example String Five");
exampleList[5].addAttribute(TextAttribute.FOREGROUND, Color.BLUE, 0, 2);
for(int i = 0; i < creditNames.length; ++i)
exampleList[i].addAttribute(TextAttribute.FONT, scoreFont);
// In the paintComponent(Graphics g) method overriden for the JPanel where everything is drawn
g2d.setColor(Color.WHITE);
g2d.setFont(scoreFont);
int y = 10;
for(AttributedString a : exampleList)
g2d.drawString(a.getIterator(), 50, y += 50);
如果还有其他需要,请告诉我。