我正在尝试创建一个旋转颜色的 String
。每个字母都有不同的颜色
,它们需要以线性方式旋转。文本将放在 JLabel
中。
我构建了文本,以便在给定一个单词和一组颜色(字符串)的情况下创建它。
String[] colors = {"white", "blue", "red"};
String word = "foo";
String coloredText;
String[] letters = word.split("(?!^)"); //split text into indiv. letters
coloredText = "<html>";
for(int i = 0, j = 0; i < letters.length; i++, j++){
if(j >= colors.length)
j=0;
coloredText += String.format("<font color='%s'> %s </font>", colors[j], letters[i]);
}
coloredText += "</html>";
这将生成一个字符串,其 foo 带有白色 F
、蓝色 O
和红色结尾 O
。
当然,如果颜色比字母少,它们就会继续旋转。
现在我有一个计时器
来旋转颜色,但我想不出算法
来做这件事。
基本上,每种颜色都应该代替后面的颜色,最后一种颜色代替第一种颜色。
例如:
当然,这必须适用于任意数量的给定字母和颜色,不适合的颜色将被忽略。 (一个有 3 个字母和 10 种颜色的单词只会使用前 3 种颜色)。
我试过使用 .replace()
但 regex
对我来说有点太难了。
有什么想法吗?
最佳答案
你可以有一个额外的整数(类或实例变量,取决于你的代码)作为 0 和 colors.length-1 之间的偏移量计数器。
int offset = 0
每次您的计时器执行时,将偏移量增加 1 并检查您的偏移量是否溢出允许的偏移量。如果是,则将其重置为 0。
void onTimerExecutes(){
offset++;
if (offset >= colors.length)
offset = 0;
applyColorsToText();
}
然后将偏移量添加到您的j
:
j = offset;
for(int i = 0, i < letters.length; i++, j++)
关于java - 在字符串中的颜色之间旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40775879/