setPromptText() 函数最初不适用于 TextField

Tom*_*omJ 5 javafx textfield javafx-2

private VBox addVBox() {

    VBox vb1 = new VBox();
    vb1.setPadding(new Insets(40, 40, 20, 40));
    vb1.setSpacing(20);
    vb1.setStyle("-fx-background-color: #333333;");

    TextField txt1 = new TextField();
    txt1.setPromptText("Class Number");
    txt1.setPrefSize(70, 30);

    Button b1 = new Button("DELETE");
    b1.setFont(Font.font("Calibri", FontWeight.BOLD, 17));
    b1.setPrefSize(100, 30);
    b1.setStyle(" -fx-base: #ffffff;");
    b1.setTextFill(Color.BLACK);

    vb1.getChildren().addAll( txt1, b1);        
    return vb1;
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码。其中 setPromptText() 函数正在运行,但未显示指定的文本内容。这是因为当程序运行时,文本字段是其中的第一个控件,当窗口打开时,文本字段将被选中,因此不会显示提示文本。如何在窗口打开时使提示文本可见?

kle*_*tra 6

进一步挖掘表明,这是一个功能,而不是一个错误——两者都有争论:

  • 当字段被聚焦时不显示提示感觉就像在用户最需要的时候丢失了关键信息
  • ux 认为提示不应该包含关键信息,首先

为了服务双方,行为可通过 css、fi 进行配置

name.setStyle("-fx-prompt-text-fill: derive(-fx-control-inner-background,-30%); }");
Run Code Online (Sandbox Code Playgroud)


Ans*_*har 4

FocusTraversable()方法设置为false

尝试这个...

private VBox addVBox() {

VBox vb1 = new VBox();
vb1.setPadding(new Insets(40, 40, 20, 40));
vb1.setSpacing(20);
vb1.setStyle("-fx-background-color: #333333;");

TextField txt1 = new TextField();
txt1.setPromptText("Class Number");
txt1.setPrefSize(70, 30);
txt1.setFocusTraversable(false); // set focus traversable false.

Button b1 = new Button("DELETE");
b1.setFont(Font.font("Calibri", FontWeight.BOLD, 17));
b1.setPrefSize(100, 30);
b1.setStyle(" -fx-base: #ffffff;");
b1.setTextFill(Color.BLACK);

vb1.getChildren().addAll( txt1, b1);        
return vb1;
}
Run Code Online (Sandbox Code Playgroud)