-fx-text-fill 的 JavaFX TextField setStyle 有时会被忽略

问题描述 投票:0回答:1

场景包含一个 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)。

eclipse javafx textfield
1个回答
0
投票

当我阅读@Slaw 的评论(展示了他的软件)时,我意识到我只尝试通过 Eclipse 启动来运行,所以我导出了代码并在没有 Eclipse 的情况下运行。当导出的代码工作时,我决定升级 Eclipse。

单独将 Eclipse 从 2021-12 升级到 2023-06 并没有解决这个问题,但另外将 Java 从 17.0.4.1 升级到 20.0.2 却解决了。

结论:需要升级 Java 才能修复该问题,并且可能需要也可能不需要升级 Eclipse。

© www.soinside.com 2019 - 2024. All rights reserved.