java⽂本输⼊框_Java开发笔记(⼀百三⼗九)JavaFX的输⼊
循着的旧例,JavaFX仍然提供了三种⽂本输⼊框,分别是单⾏输⼊框TextField、密码输⼊框PasswordField、多⾏输⼊框TextArea。这些输⼊框都由抽象类TextInputControl派⽣⽽来,因此拥有共同的编辑⽅法,常⽤的主要有下列两个:
setEditable:设置输⼊框能否编辑。为true表⽰能够编辑,为false表⽰不能编辑。
setPromptText:设置输⼊框的提⽰语,⽤来提⽰⽤户可以输⼊什么样的⽂本。
⽂本输⼊框与⽂本标签的区别在于,输⼊框内的⽂字允许编辑,⽽标签⽂字不允许编辑。尽管如此,输⼊框依旧要在界⾯上显⽰⽂字,故⽽它拥有以下与Label控件同样的⽅法:
setPrefSize:设置输⼊框的推荐宽⾼。
setText:设置输⼊框的⽂本。
setFont:设置输⼊框的字体。
setBackground:设置输⼊框的背景。
⾄于Label控件的其它⽅法如setAlignment、setTextFill、setWrapText、setGraphic,由于涉及到具体细节,因此TextInputControl类并未提供。除此之外,的三种输⼊框各有千秋,接下来将对它们分别予以详细说明。
1、单⾏输⼊框TextField
TextField控件对应Swing的JTextField,它只能输⼊⼀⾏的⽂字,另外提供了下列两个专属⽅法:
setAlignment:设置输⼊框的对齐⽅式。该⽅法等同于Label控件的同名⽅法。
setPrefColumnCount:设置输⼊框的推荐列数。
下⾯是在界⾯上添加单⾏输⼊框的代码⽚段:
Button btn1 = new Button("单⾏输⼊框"); // 创建⼀个按钮
btn1.setOnAction(new EventHandler() { // 设置按钮的单击事件
@Override
public void handle(ActionEvent arg0) { // 处理单击事件
HBox hbox = new HBox(); // 创建⼀个⽔平箱⼦
Label label = new Label("请输⼊⼿机号码:"); // 创建⼀个标签
TextField field = new TextField(); // 创建⼀个单⾏输⼊框
field.setPrefSize(200, 50); // 设置单⾏输⼊框的推荐宽⾼
field.setEditable(true); // 设置单⾏输⼊框能否编辑
field.setPromptText("请输⼊⼿机号码"); // 设置单⾏输⼊框的提⽰语
field.setAlignment(Pos.CENTER_LEFT); // 设置单⾏输⼊框的对齐⽅式
field.setPrefColumnCount(11); // 设置单⾏输⼊框的推荐列数
borderPane.setCenter(hbox); // 把⽔平箱⼦放到边界窗格的中央
}
});
javaswing和javafx
运⾏包含以上测试代码的应⽤程序,单击按钮后的窗⼝界⾯如下图所⽰,可见在TextField中填写的⽂字以明⽂显⽰。
2、密码输⼊框PasswordField
PasswordField控件对应Swing的JPasswordField,它实际上继承⾃TextField,唯⼀区别是输⼊的⽂字以圆点代替,连回显字符的设置⽅法都未提供。下⾯是在界⾯上添加密码输⼊框的代码⽚段:
Button btn2 = new Button("密码输⼊框"); // 创建⼀个按钮
btn2.setOnAction(new EventHandler() { // 设置按钮的单击事件
@Override
public void handle(ActionEvent arg0) { // 处理单击事件
HBox hbox = new HBox(); // 创建⼀个⽔平箱⼦
Label label = new Label("请输⼊密码:"); // 创建⼀个标签
PasswordField field = new PasswordField(); // 创建⼀个密码输⼊框
field.setPrefSize(200, 50); // 设置密码输⼊框的推荐宽⾼
field.setEditable(true); // 设置密码输⼊框能否编辑
field.setPromptText("请输⼊密码"); // 设置密码输⼊框的提⽰语
field.setAlignment(Pos.CENTER_LEFT); // 设置密码输⼊框的对齐⽅式
field.setPrefColumnCount(11); // 设置密码输⼊框的推荐列数
borderPane.setCenter(hbox); // 把⽔平箱⼦放到边界窗格的中央
}
});
运⾏包含以上测试代码的应⽤程序,单击按钮后的窗⼝界⾯如下图所⽰,可见在PasswordField中填写的⽂字以密⽂显⽰。
3、多⾏输⼊框TextArea
TextArea控件对应Swing的JTextArea,它允许输⼊多⾏⽂本,且⽂字固定朝左上⾓对齐,所以该控件没有setAlignment⽅法,反⽽多出了setWrapText换⾏⽅法。TextArea额外多出的⼏个⽅法说明如下:
setWrapText:设置输⼊框⽂本是否⽀持⾃动换⾏。该⽅法等同于Label控件的同名⽅法。
setPrefColumnCount:设置输⼊框的推荐列数。
setPrefRowCount:设置输⼊框的推荐⾏数。
下⾯是在界⾯上添加多⾏输⼊框的代码⽚段:
Button btn3 = new Button("多⾏输⼊框"); // 创建⼀个按钮
btn3.setOnAction(new EventHandler() { // 设置按钮的单击事件
@Override
public void handle(ActionEvent arg0) { // 处理单击事件
HBox hbox = new HBox(); // 创建⼀个⽔平箱⼦
hbox.setPrefSize(300, 80); // 设置⽔平箱⼦的推荐宽⾼
Label label = new Label("请输⼊评价:"); // 创建⼀个标签
TextArea area = new TextArea(); // 创建⼀个多⾏输⼊框
area.setMaxHeight(85); // 设置多⾏输⼊框的最⼤⾼度
//area.setMaxWidth(300); // 设置多⾏输⼊框的最⼤宽度
area.setPrefSize(200, 50); // 设置多⾏输⼊框的推荐宽⾼
area.setEditable(true); // 设置多⾏输⼊框能否编辑
area.setPromptText("请输⼊评价"); // 设置多⾏输⼊框的提⽰语
area.setWrapText(true); // 设置多⾏输⼊框是否⽀持⾃动换⾏。true表⽰⽀持,false表⽰不⽀持。
area.setPrefColumnCount(11); // 设置多⾏输⼊框的推荐列数
area.setPrefRowCount(3); // 设置多⾏输⼊框的推荐⾏数
borderPane.setCenter(hbox); // 把⽔平箱⼦放到边界窗格的中央
}
});
运⾏包含以上测试代码的应⽤程序,单击按钮后的窗⼝界⾯如下图所⽰,可见TextArea的确⽀持输⼊多⾏⽂本。
继续在多⾏输⼊框中填写⽂字,⼀旦⽂字总⾼度超过输⼊框的⾼度,输⼊框右侧就会⾃动显⽰滚动条,此时窗⼝界⾯如下图所⽰。
由图⽰可见JavaFX的TextArea默认集成了滚动条控件,⽆需像Swing的JTextArea那样得程序员⼿⼯操作。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。