Я пытаюсь создать String
, который вращает цвет. Каждая буква имеет разные color
, и они должны вращаться линейно. Текст войдет внутрь 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
окончательными.
Конечно, если бы было меньше цветов, чем писем, они бы просто продолжали вращаться.
Теперь у меня есть timer
, чтобы повернуть цвет, но я не могу найти algorithm
, чтобы сделать это. В принципе, каждый цвет должен заменяться следующим: последний заменяет первый.
Так, например:
Конечно, это должно работать для любого числа заданных букв и цветов, с цветами, которые не подходят игнорируются. (Слово из 3 букв с 10 цветами будет использовать только первые 3 цвета).
Я попытался использовать .replace()
, но regex
для меня слишком сложно.
Любая идея?
Сохраните указатель цвета, который вы использовали для первой буквы в поле, и уменьшайте его каждый раз, когда вы окрашиваете строку. Если он достигнет -1, сбросьте его до последнего индекса. Первый раунд равен 0, поэтому вы получаете WBR. Затем вы уменьшаете его. Поскольку он становится равным -1, вы устанавливаете его в 2, и вы получаете RWB. Затем вы уменьшаете его, и вы попадаете в BRW. –