创建一个包含Button、TextField、label等组件的登录窗口,你可以使用FlowPane、GridPane和BorderPane。当你用正确的用户名和密码点击登录按钮时,显示“登录成功”,否则,显示“非法用户名或密码”。
需要运行结果
基于Monster 组和GPT的调写:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class LoginWindow extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("JavaFX登录窗口");
// 创建一个网格窗格来布局登录窗口
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
// 添加窗口标题
Text scenetitle = new Text("欢迎使用登录窗口");
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(scenetitle, 0, 0, 2, 1);
// 添加用户名标签
Label userName = new Label("用户名:");
grid.add(userName, 0, 1);
// 添加用户名文本框
TextField userTextField = new TextField();
grid.add(userTextField, 1, 1);
// 添加密码标签
Label pw = new Label("密码:");
grid.add(pw, 0, 2);
// 添加密码框
PasswordField pwBox = new PasswordField();
grid.add(pwBox, 1, 2);
// 添加登录按钮
Button btn = new Button("登录");
grid.add(btn, 1, 4);
// 添加文本区域用于显示登录状态
Text loginStatus = new Text();
grid.add(loginStatus, 1, 6);
// 为登录按钮设置操作
btn.setOnAction(e -> {
String userNameInput = userTextField.getText();
String passwordInput = pwBox.getText();
if (userNameInput.equals("用户名") && passwordInput.equals("密码")) {
loginStatus.setText("登录成功");
} else {
loginStatus.setText("非法用户名或密码");
}
});
// 创建场景并显示窗口
Scene scene = new Scene(grid, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
好的,这里提供一个使用GridPane的Java GUI登录窗口的示例代码:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class LoginWindow extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// 创建GridPane布局
GridPane gridPane = new GridPane();
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(10));
// 添加组件
Label userLabel = new Label("用户名:");
TextField userText = new TextField();
Label passwordLabel = new Label("密 码:");
PasswordField passwordText = new PasswordField();
Button loginButton = new Button("登 录");
gridPane.add(userLabel, 0, 0);
gridPane.add(userText, 1, 0);
gridPane.add(passwordLabel, 0, 1);
gridPane.add(passwordText, 1, 1);
gridPane.add(loginButton, 1, 2);
// 绑定按钮事件
loginButton.setOnAction(event -> {
String username = userText.getText();
String password = passwordText.getText();
if (isValid(username, password)) {
Label successLabel = new Label("登录成功");
Scene successScene = new Scene(successLabel, 200, 100);
Stage successStage = new Stage();
successStage.setScene(successScene);
successStage.show();
} else {
Label errorLabel = new Label("非法用户名或密码");
Scene errorScene = new Scene(errorLabel, 200, 100);
Stage errorStage = new Stage();
errorStage.setScene(errorScene);
errorStage.show();
}
});
// 创建场景并显示窗口
Scene scene = new Scene(gridPane, 300, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
private boolean isValid(String username, String password) {
// 这里可以做登录验证,这里演示用"admin"和"password"做为正确的用户名和密码
return "admin".equals(username) && "password".equals(password);
}
public static void main(String[] args) {
launch(args);
}
}
这个登录窗口使用了GridPane布局,包含了用户名、密码输入框、登录按钮等组件。当用户点击登录按钮时,会调用isValid()
方法进行用户名和密码验证,如果正确,就创建一个新的窗口显示"登录成功",否则创建一个新的窗口显示"非法用户名或密码"。
运行结果截图:
以下内容引用CHATGPT:
首先,我们可以使用JavaFX来实现GUI编程。在登录窗口中,我们可以使用GridPane来放置组件。下面是一个简单的例子:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class LoginWindow extends Application {
@Override
public void start(Stage primaryStage) {
// 创建GridPane
GridPane gridPane = new GridPane();
gridPane.setAlignment(Pos.CENTER);
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(25, 25, 25, 25));
// 添加用户名标签和文本框
Label userNameLabel = new Label("用户名:");
gridPane.add(userNameLabel, 0, 1);
TextField userNameField = new TextField();
gridPane.add(userNameField, 1, 1);
// 添加密码标签和文本框
Label passwordLabel = new Label("密码:");
gridPane.add(passwordLabel, 0, 2);
TextField passwordField = new TextField();
gridPane.add(passwordField, 1, 2);
// 添加登录按钮
Button loginButton = new Button("登录");
gridPane.add(loginButton, 1, 3);
// 添加消息标签
Label messageLabel = new Label();
gridPane.add(messageLabel, 1, 4);
// 绑定登录按钮事件
loginButton.setOnAction(event -> {
// 判断用户名和密码是否正确
if ("admin".equals(userNameField.getText()) && "123456".equals(passwordField.getText())) {
messageLabel.setText("登录成功");
} else {
messageLabel.setText("非法用户名或密码");
}
});
// 创建场景
Scene scene = new Scene(gridPane, 300, 250);
// 设置窗口标题和场景
primaryStage.setTitle("登录窗口");
primaryStage.setScene(scene);
// 显示窗口
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在这个例子中,我们创建了一个GridPane,然后添加了用户名标签、用户名文本框、密码标签、密码文本框、登录按钮和消息标签。我们为登录按钮添加了一个事件处理程序,在用户点击登录按钮时,判断用户名和密码是否正确,然后在消息标签中显示相应的消息。
当然,你可以使用FlowPane或BorderPane来布局你的组件,只需要将代码中的GridPane换成相应的布局即可。
不知道你这个问题是否已经解决, 如果还没有解决的话: