场景包含一个 VBox,其中包含一个 HBox,它有 3 个子项。 3 个子级中的每一个都是包含 TextField 的子类 StackPane。 HBox 有 setStyle("-fx-background-color:magenta;");,3 个 TextField 中的每一个都有 setStyle("-fx-text-fill:yellow;-fx-background-color:pink;");。第一个子类 StackPane 有 setStyle("");第二个有 setStyle("-fx-background-color:green;");第三个有 setStyle("-fx-font-size:20;");
public class Test extends Application {
static public void main(String[] args) { Application.launch(args); }
public Test(){ }
public class S1 extends StackPane {
public S1(String style, String text) {
TextField textField = new TextField(text);
textField.setEditable(false);
textField.setStyle("-fx-text-fill:yellow;-fx-background-color:pink;");
getChildren().setAll(textField);
setStyle(style);
}
}
@Override
public void start(Stage stage) {
VBox vb = new VBox();
stage.setScene(new Scene(vb, 600, 100));
stage.show();
vb.requestFocus();
HBox hb1 = new HBox(new S1("", "AA "), new S1("-fx-background-color:green;", "BB"), new S1("-fx-font-size:20;", "CC"));
hb1.setStyle("-fx-background-color:magenta;");
vb.getChildren().add(hb1);
}
@Override
public void stop() { }
}
预期结果:所有 3 个文本字段都有黄色文本
实际结果:第一个文本字段有黄色文本,第二个和第三个文本字段有黑色文本
我是一名退休已久的汇编程序员,为了“乐趣”而自学 Java 和面向对象编程,我真的不明白为什么上面的代码不起作用......这是我遗漏的还是我找到的东西一个错误?
实际效果图
Windows 11、Java jdk-17.0.4.1、javafx-sdk-20.0.2(当前最新版本)、Eclipse 版本:2021-12 (4.22.0)。
当我阅读@Slaw 的评论(展示了他的软件)时,我意识到我只尝试通过 Eclipse 启动来运行,所以我导出了代码并在没有 Eclipse 的情况下运行。当导出的代码工作时,我决定升级 Eclipse。
单独将 Eclipse 从 2021-12 升级到 2023-06 并没有解决这个问题,但另外将 Java 从 17.0.4.1 升级到 20.0.2 却解决了。
结论:需要升级 Java 才能修复该问题,并且可能需要也可能不需要升级 Eclipse。