package com.pan;
import javafx.application.*;
import javafx.beans.value.*;
import javafx.event.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.stage.*;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Group root = new Group();
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setWidth(800);
primaryStage.setHeight(600);
primaryStage.setTitle("JavaFX");
//创建输入框,输入框和Button一样,都是Node,有相同的设置方法
TextField text = new TextField();
text.setLayoutX(50);
//设置提示,Node结点都有setTooltip方法
Tooltip tip = new Tooltip("这是提示");//括号里面是默认文本
//tip.setStyle();//提示也可以设置样式
text.setTooltip(tip);
text.setPromptText("请输入7个字以下");//设置隐式提示
text.setFocusTraversable(false);//关闭初始焦点
//文本框监听器,每一次改变文本框中的值都会被监听
text.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> arg0, String arg1, String arg2) {
if(arg2.length() > 7) {//设置文本最大长度,arg1是旧String,arg2是新的String
text.setText(arg2);
}
}
});
//文本框中的文字选中监听器,arg2是当前选中值,arg1是前一个选中值
text.selectedTextProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> arg0, String arg1, String arg2) {
System.out.println(arg2);
}
});
//文本框的确定按钮,按Enter键生效
text.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
System.out.println("你按enter键确认了文本框的输入");
}
});
//文本框的单击事件
text.setOnMouseClicked(new EventHandler<Event>() {
@Override
public void handle(Event arg0) {
System.out.println("你单击了一下文本框");
}
});
//密码框,也都属于Node,跟文本框设置一样
PasswordField ptext = new PasswordField();
ptext.setLayoutY(40);
ptext.setLayoutX(50);
ptext.setPromptText("最多15位");//设置隐式提示
ptext.setFocusTraversable(false);//关闭初始焦点
ptext.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> arg0, String arg1, String arg2) {
if(arg2.length() > 15) {
ptext.setText(arg1);
}
}
});
//设置标签
Label l1 = new Label("文本框");
Label l2 = new Label("密码框");
l1.setLayoutY(5);
l2.setLayoutY(45);
//设置单击标签事件
l1.setOnMouseClicked(new EventHandler<Event>() {
@Override
public void handle(Event arg0) {
System.out.println("你单机了文本框标签一下");
}
});
l2.setOnMouseClicked(new EventHandler<Event>() {
@Override
public void handle(Event arg0) {
System.out.println("你单机了密码框标签一下");
}
});
root.getChildren().addAll(text,ptext,l1,l2);
primaryStage.show();
}
}
JavaFX输入框,密码框,标签
最新推荐文章于 2023-01-13 14:05:19 发布