Могут ли несколько объектов Text (в JavaFX) иметь свой стиль одновременно? - PullRequest
0 голосов
/ 09 января 2019

Например, если у меня есть текстовый объект с именем foo и другой текстовый объект с именем bar, есть ли способ объединить

foo.setFont(Font.font ("Courier New")); 
bar.setFont(Font.font ("Courier New"));
foo.setFill(Color.GREEN); 
bar.setFill(Color.GREEN);

А как было бы возможно, если бы эти объекты Text были в ArrayList?

1 Ответ

0 голосов
/ 09 января 2019

Без списка:

Вы можете использовать метод с varargs, чтобы установить их:

private void setStyles(Text... texts) {
    for (Text text : texts) {
        text.setFont(Font.font("Courier New"));
        text.setFill(Color.GREEN);
    }        
}

Теперь, чтобы установить стиль для нескольких Text объектов, просто передайте их все этому методу:

setStyles(foo, bar);

Эллипсы (в Text...) в основном говорят методу, чтобы он принимал любое количество Text объектов, поэтому вам не нужно вызывать его для каждого из них.

Со списком:

Этот метод почти идентичен, но вместо него принимает List<Text> для параметра:

private void setStyles(List<Text> texts) {
    for (Text text : texts) {
        text.setFont(Font.font("Courier New"));
        text.setFill(Color.GREEN);
    }
}

Теперь вы можете просто передать свой список объектов методу:

setStyles(listOfTexts);

со встроенной таблицей стилей:

Бонусный ответ: Вы также можете достичь того же результата, используя setStyle метод вашего Text объекта. Для этого просто замените тело цикла в вашем методе следующим образом:

text.setStyle("-fx-text-fill: green; -fx-font-family: 'Courier New'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...