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是其中的第一个控件,当窗口打开时,将选择文本字段,因此它不会显示提示文本。如何在窗口打开时显示提示文字?
答案 0 :(得分:4)
进一步挖掘显示它是feature, not a bug - 两者都存在争议:
要为双方提供服务,可以通过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);
后就可以了