我正在尝试使用 JavaFX 创建一个应用程序。 我想在成功登录后获取当前登录的用户名和用户名。 我想把它显示在主页上。 我怎样才能做到这一点? 请帮忙

媒体控制器.java

    @FXML
    private Label tf_getname;

    @FXML
    void happyButton(ActionEvent event) {

        DbConnect dbconnect=new DbConnect();
        Connection conn=dbconnect.getConnection();

        String username = tf_getname.getText();

//        String source1 = event.getSource().toString(); //yields complete string
        //String source2 = event.getPickResult().getIntersectedNode().getId(); //returns JUST the id of the object that was clicked
//        System.out.println("Full String: " + source1);
//        System.out.println("Just the id: " + source2);
//        System.out.println(" " + source2);

        try {

            String sql = "SELECT name FROM users WHERE name='"+username+"'";

            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);

            while(rs.next()){
                tf_getname.setText(rs.getString("name"));

            }


        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }

#1楼 票数:0 已采纳

我觉得你的说法有问题。 尝试以下方式来设置和执行 Statement。

Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("Select * from test");
        while(rs.next()){
            System.out.println(rs.getString("name"));
            con.close();
        }
        }catch(Exception e){
        }

#2楼 票数:0

让我直说吧,您有用户登录,然后将场景更改为主窗口,但是您想记住登录的用户并在主页上显示该用户名吗?

听起来您必须在场景之间传递数据。

为此,您需要在 OOP 中解决这个问题。 有一个对象类,代表您的用户以及所有 getter 和 setter。

public class User {

    private String email;
    

    public User(String email) {
        this.email = email;
    
    }

    public String getEmail() {
        return email;
    }

}

当您在登录时连接到数据库时,验证用户然后实例化“用户”类的对象,例如,然后将其传递给您正在加载的主窗口场景。

public class LoginController implements Initializable {
    public User user;


    // All your FXML code



  @FXML
void handleLogin(ActionEvent actionEvent) throws IOException {
    // Do your validation and then call the changeToMainWindow()
    changeToMainWindow();
}

}

在主窗口控制器中有一个“initData”类或其他东西。

喜欢

public void initData(User user) {
        selectedUser = user;
        labelUser.setText(selectedUser.getEmail());
    }

然后从您的登录类中,在验证后,通过实例化您的用户,在更改场景之前将数据发送到主窗口,然后将对象从您的第二个场景传递给 initData 方法。

//User validation, then:
// Get the FXMLLoader then
//Instantiate the mainwindow controller: 

 public void changeToMainWindow() throws IOException {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource("mainwindow.fxml"));
        Parent root = loader.load();
        Scene mainScene = new Scene(root);

        // access the controller
        MainWindowController mainWindowController = loader.getController();
        mainWindowController.initData(user);

        Stage primaryStage = (Stage) loginButton.getScene().getWindow();
        primaryStage.setScene(mainScene);
        primaryStage.show();
    }

然后登录后,使用 changeToMainWindow() 方法,它将传递给用户。

在上面的例子中,我只是传递电子邮件,但你明白了。

  ask by Randika Madushan translate from so

未解决问题?本站智能推荐:

1回复

如何显示JavaFX从MYSQL进行的阿拉伯查询搜索?

上面的查询工作正常,可以通过phpmyAdmin查询找到该元素,但是在JavaFX中使用它无法获取它。 并获得英语搜索,因此我需要在java中添加内容以允许我使用阿拉伯语搜索。
1回复

从javafx中的另一个窗口设置TextField的值

我在Action(按Enter)上设置了TextField,以打开另一个fxml窗口,该窗口显示选择表(数百个选择)。 基本上,我需要第二个窗口在第一个窗口上设置文本字段的文本。 我在第二个窗口中有一个表,上面有一个标记为“使用所选”的按钮。 我要这样做,以便在单击“使用选定的内容”
2回复

javafx/scenebuilder 文本字段或标签中的 mysql 数据

有没有办法从 mysql 数据库中获取数据并在 javafx/scenebuilder 的文本字段中显示该数据的一部分? 我在 fxmlcontroller 中尝试了以下内容: 结果是一个 NullPointerException 我想我得到了连接并通过系统打印获取了数据,而不是将数据放入文
1回复

JavaFX将数据添加到表

我正在尝试将数据添加到JavaFX表中。 我有一个GameOfThronesCharacter类。 我制作了几个实例,并尝试将其数据插入JavaFX表中。 该表是在FX SceneBuilder中制作的,而fxml文件在main中已链接。 这是实践,我计划将它链接到mysql表上
2回复

从数据库获取名称,并在带有Java的choiceBox中使用它们

我正在努力获取数据库中名为“名称”的列的值。 我还需要将它们插入Observabllelist以便可以将它们用作choiceBox选项。 然后通过将我从GetTournamentsName()方法获得的值分配给Choicbox TournamentsOption来初始化应用程序的场景。
1回复

使用MySQL查询的结果更新TableView行颜色

我的用户可以创建添加到MySQL数据库的作业。 作业具有优先级(1、2或3)。 我想做的是根据作业的优先级来修改各个行的颜色,例如,优先级3是红色行,因为这是一项更紧急的工作,优先级1是绿色行,因为它的紧急性较低。 我有一个工作模型类,该类具有优先权的getter / setter。
1回复

用JavaFX中的onMouseEntered事件重新填充SVG路径

我正在一个个人项目中,该项目包括一个.fxml文档(使用NetBeans从.svg文件创建)。 如您所见,这是地图。此外,所有区域都将转换为.fxml文件中的SVG路径。 问题是我可以通过将JavaFX Scene Builder与控制器类一起使用来处理鼠标事件,但是,我想在每次输入鼠标时重
1回复

在JavaFX中使用1个阶段和多个场景登录应用程序

我正在做一个时间表项目。 我已经成功地为所有内容创建了一个登录系统和菜单,但是当我按下我已经完成的按钮时,它将打开一个新窗口(带有舞台,场景)。 我读过这不是最好的方法。 最好的方法是只有1个主要阶段,而那个是我启动应用程序时的登录。 但我已经找到了有关一个阶段的多个场景的信息,但我