gpt4 book ai didi

JavaFX TextField 在焦点上将填充更改为 0

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:20 25 4
gpt4 key购买 nike

我正在尝试为 JavaFX 中的文本字段设置填充(使用 Java 8_192)。我有一个简单的 VBox,里面有 3 个 TextFields。如果我在第一个 TextField 上手动设置填充,当我聚焦它们时,其他 TextFields 会以某种方式将它们的填充重置为 0。

第一个 TextField 有一个手动填充:

screenshot-1

当聚焦第二个(或第三个)TextField 时,它们的填充为 0:

enter image description here

如果我关注不同的东西,它们的填充将重置为 javafx (4, 7, 4, 7) 设置的通常填充。奇怪的是,如果我设置tf2的填充而不是tf1,就不会有任何问题。此外,如果我手动设置每个 TextField 的填充,它们将不会重置为 0。但这显然不是答案......

我的代码:

public class Main extends Application {
@Override
public void start(Stage primaryStage) {
VBox vbox = new VBox();
vbox.setSpacing(10);
vbox.setPadding(new Insets(10, 10, 10, 10));

TextField tf1 = new TextField();
TextField tf2 = new TextField();
TextField tf3 = new TextField();

vbox.getChildren().addAll(tf1);
vbox.getChildren().addAll(tf2);
vbox.getChildren().addAll(tf3);

tf1.setPadding(new Insets(7, 7, 7, 7));
// Setting the padding of tf2 instead of tf1 works

Scene scene = new Scene(vbox, 250, 150);
primaryStage.setScene(scene);
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}
}

为什么只有在将填充设置为我添加到 vbox 的第一个 TextField 时,才会在焦点之后重置填充?

最佳答案

如果我理解正确,你只想在文本字段像标题一样聚焦时设置它的填充,那么我会使用这个:

yourTextField.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) {
if (newPropertyValue) {
System.out.println("Textfield on focus");

yourTextField.setStyle("-fx-padding: *yourNewPadding*");
} else {
System.out.println("Textfield out focus");

yourTextField.setStyle("-fx-padding: *yourOldPadding*");
}
}
});

希望对你有帮助!抱歉,如果这不能回答您的问题,但这是我的理解方式。

关于JavaFX TextField 在焦点上将填充更改为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56990008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com