使用FormsFX写一个登录表单
时间: 2023-09-09 15:12:33 浏览: 43
好的,以下是使用FormsFX编写登录表单的示例代码:
```java
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import org.controlsfx.control.textfield.CustomPasswordField;
import org.controlsfx.control.textfield.CustomTextField;
import org.controlsfx.validation.ValidationResult;
import org.controlsfx.validation.ValidationSupport;
import org.controlsfx.validation.Validator;
public class LoginForm extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// 创建一个GridPane布局
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(10));
gridPane.setHgap(10);
gridPane.setVgap(10);
// 创建用户名和密码输入框
CustomTextField usernameField = new CustomTextField();
usernameField.setPromptText("请输入用户名");
CustomPasswordField passwordField = new CustomPasswordField();
passwordField.setPromptText("请输入密码");
// 设置输入框位置
GridPane.setConstraints(usernameField, 0, 0);
GridPane.setConstraints(passwordField, 0, 1);
// 创建登录按钮
Button loginButton = new Button("登录");
GridPane.setConstraints(loginButton, 0, 2);
// 创建验证支持对象
ValidationSupport validationSupport = new ValidationSupport();
// 添加用户名和密码验证规则
validationSupport.registerValidator(usernameField, Validator.createEmptyValidator("用户名不能为空"));
validationSupport.registerValidator(passwordField, Validator.createEmptyValidator("密码不能为空"));
// 添加登录按钮点击事件
loginButton.setOnAction(event -> {
// 执行登录操作
if (validationSupport.isInvalid()) {
// 显示错误信息
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setContentText("用户名或密码不能为空!");
alert.showAndWait();
} else {
// 执行登录操作
String username = usernameField.getText();
String password = passwordField.getText();
// TODO: 执行登录操作
}
});
// 将所有控件添加到GridPane中
gridPane.getChildren().addAll(usernameField, passwordField, loginButton);
// 创建场景并显示
Scene scene = new Scene(gridPane, 300, 150);
primaryStage.setScene(scene);
primaryStage.setTitle("登录");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
在上面的代码中,我们使用了 `org.controlsfx` 提供的 `CustomTextField` 和 `CustomPasswordField` 来创建自定义的文本输入框。同时,我们还使用了 `org.controlsfx.validation` 来实现表单验证,并在登录按钮点击事件中执行登录操作。