JAVA GUI方面的编程

创建一个包含Button、TextField、label等组件的登录窗口,你可以使用FlowPane、GridPane和BorderPane。当你用正确的用户名和密码点击登录按钮时,显示“登录成功”,否则,显示“非法用户名或密码”。
需要运行结果

基于Monster 组和GPT的调写:

img

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()方法进行用户名和密码验证,如果正确,就创建一个新的窗口显示"登录成功",否则创建一个新的窗口显示"非法用户名或密码"。

运行结果截图:

Java GUI登录窗口


如果我的回答解决了您的问题,请采纳!

以下内容引用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换成相应的布局即可。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^