可以同时设置多个Text对象(在JavaFX中)的样式吗?

时间:2019-01-08 21:06:41

标签: javafx text format

例如,如果我有一个名为foo的Text对象和另一个名为bar的Text对象,是否可以合并

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

如果这些Text对象位于ArrayList中,怎么可能?

1 个答案:

答案 0 :(得分:0)

  

没有列表:

您可以使用带有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'");