任何人都可以帮我改变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 */
}
真的很感激任何帮助!谢谢!
答案 0 :(得分:1)
这是一种通用方式。
您可以在upper
中将需要的内容标记为lower
和styleClass
并调用此方法:
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())
);