setPromptText()函数最初不用于TextField

时间:2014-04-13 06:27:36

标签: javafx javafx-2 textfield

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;
}

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

3 个答案:

答案 0 :(得分:4)

进一步挖掘显示它是feature, not a bug - 两者都存在争议:

  • 在关注字段时没有显示提示,感觉就像在用户最需要时缺少重要信息
  • ux认为,提示不应该有关键信息,从
  • 开始

要为双方提供服务,可以通过css,f.i配置行为。

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

答案 1 :(得分:3)

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;
}

答案 2 :(得分:-1)

我遇到了同样的问题,但是添加了setFocusTraversable(false);后就可以了