使用JavaFX CSS将文本案例转换为UpperCase

时间:2015-07-17 07:14:06

标签: java css javafx

任何人都可以帮我改变JavaFX项目中的案例我试图通过浏览找到解决方案,但我不能找到下面的代码我试过但它可以&#39 ;得到结果

.text {
    -fx-font-family: "Arial";
    -fx-font-size: 24;
    -fx-text-fill: #263248;
    -fx-padding: 10 20 10 20;
    -fx-cursor: hand;
    -fx-text-transform: uppercase; /* this property is not working */ 
}

真的很感激任何帮助!谢谢!

3 个答案:

答案 0 :(得分:1)

这是一种通用方式。
您可以在upper中将需要的内容标记为lowerstyleClass并调用此方法:

public static void textTransform(@NotNull Node root) {
    _textTransform(root, ".upper");
    _textTransform(root, ".lower");
}
private static void _textTransform(@NotNull Node root, @NotNull String selector) {
    boolean upper = selector.equalsIgnoreCase(".upper");
    for (Node node : root.lookupAll(selector)) {
        if (node instanceof Text) {
            Text text = (Text) node;
            text.setText(upper ? text.getText().toUpperCase() : text.getText().toLowerCase());
        } else
        if (node instanceof Label) {
            Label label = (Label) node;
            label.setText(upper ? label.getText().toUpperCase() : label.getText().toLowerCase());
        } else
        if (node instanceof Button) {
            Button button = (Button) node;
            button.setText(upper ? button.getText().toUpperCase() : button.getText().toLowerCase());
        }
    }
}

答案 1 :(得分:0)

不幸的是,没有CSS属性可以处理JavaFX中的文本转换(目前没有,请参阅JavaFX CSS Reference)。但是你只需要一行代码即可在Java中实现它!

对于一个实例,您有一个Label节点,其节点名为label

<Label fx:id="label" text="Hello!" />

在这种情况下,您可以通过其ID引用node并将其文本toUpperCase()设置为控制器类。

// Reference to the node you wish
// to transform texts to uppercase.
@FXML private Label label;

@Override
// Assuming you have Initializable class implemented.
public void initialize(URL arg0, ResourceBundle arg1) {

  // Get the current text value of the node.
  String text = label.getText();

  // Then update the text into whatever case you like.
  label.setText(text.toUpperCase());

}

直接来自Java代码(一行代码)。

Label label = new Label("Hello!".toUpperCase());

答案 2 :(得分:0)

您可以将ChangeListener添加到文本:

Text text;
//...
text.textProperty().add(
    (observer, oldValue, newValue) -> text.setText(newValue.toUpperCase())
);