1:Text-文本输入组件的基本使用
- 功能:输入文本信息
1.1:代码实现与想象
package application;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
//创建Text
//注意:Group容器组会自适应调节node节点的高、宽 以容纳node节点的内容 例如:如果下面Button的text内容比较多 那么对应的Text会相应加长
TextField text = new TextField();
text.setLayoutX(200); //设置起始点的X轴坐标
text.setLayoutY(50); //设置起始的Y轴坐标
//设置Text的宽度 高度
text.setPrefWidth(100);
text.setPrefHeight(20);
//设置Group
Group group = new Group();
group.getChildren().add(text);
//创建场景Scene
Scene scene = new Scene(group);
primaryStage.setScene(scene);
//设置stage的宽度 高度
primaryStage.setHeight(500);
primaryStage.setWidth(500);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
1.2:Text组件中设置提示信息
//对Text设置提示信息 当鼠标聚焦到text文本框上 会显示出该提示信息
Tooltip tooltip = new Tooltip();
tooltip.setText("这是提示信息");
text.setTooltip(tooltip);
1.3:设置text框中的PromptText提示信息
//设置PromptText
text.setPromptText("请输入正确的密码");
text.setFocusTraversable(false);//设置聚焦到text文本中时 PromptText消失
2:文本输入组件的监听动作
2.1:限制输入长度
思路:ChangeListener监听器会监听改变前和改变后的值 如果改变后的值的长度大于7(举例子)则将text文本设置为改变前的值
text.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
//oldValue为每次输入的上一次的值
System.out.println("oldValue = "+oldValue);
//newValue为每次输入最新的值
System.out.println("newValue = "+newValue);
//限制输入长度为7 即如果输入的长度大于7 则将text的文本值设置为oldValue
if(newValue.length() > 7){
text.setText(oldValue);
}
}
});
2.2:文本选择监听器
text.selectedTextProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println(newValue);
}
});
运行结果
3:Password文本输入框
Password输入框与Text输入框几乎完全一致
//注意:Group容器组会自适应调节node节点的高、宽 以容纳node节点的内容 例如:如果下面Button的password内容比较多 那么对应的password会相应加长
PasswordField password = new PasswordField();
password.setLayoutX(200); //设置起始点的X轴坐标
password.setLayoutY(50); //设置起始的Y轴坐标
package application;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.PasswordField;
import javafx.scene.control.Tooltip;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
//创建password
//注意:Group容器组会自适应调节node节点的高、宽 以容纳node节点的内容 例如:如果下面Button的password内容比较多 那么对应的password会相应加长
PasswordField password = new PasswordField();
password.setLayoutX(200); //设置起始点的X轴坐标
password.setLayoutY(50); //设置起始的Y轴坐标
//设置password的宽度 高度
password.setPrefWidth(100);
password.setPrefHeight(20);
//对password设置提示信息 当鼠标聚焦到password文本框上 会显示出该提示信息
Tooltip tooltip = new Tooltip();
tooltip.setText("这是提示信息");
password.setTooltip(tooltip);
//设置PromptText
password.setPromptText("请输入正确的密码");
password.setFocusTraversable(false);//设置聚焦到password文本中时 PromptText消失
password.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
//oldValue为每次输入的上一次的值
//System.out.println("oldValue = "+oldValue);
//newValue为每次输入最新的值
//System.out.println("newValue = "+newValue);
//限制输入长度为7 即如果输入的长度大于7 则将password的文本值设置为oldValue
if(newValue.length() > 7){
password.setText(oldValue);
}
}
});
password.selectedTextProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println(newValue);
}
});
//设置Group
Group group = new Group();
group.getChildren().add(password);
//创建场景Scene
Scene scene = new Scene(group);
primaryStage.setScene(scene);
//设置stage的宽度 高度
primaryStage.setHeight(500);
primaryStage.setWidth(500);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
4:Label--标签组件
//注意:Group容器组会自适应调节node节点的高、宽 以容纳node节点的内容 例如:如果下面Button的Label内容比较多 那么对应的Label会相应加长
Label label = new Label("我是标签");
label.setLayoutX(200); //设置起始点的X轴坐标
label.setLayoutY(50); //设置起始的Y轴坐标