gpt4 book ai didi

java - MVC Java Swing如何从 View 正确从数据库获取数据

转载 作者:行者123 更新时间:2023-12-02 05:05:27 25 4
gpt4 key购买 nike

我正在按照 MVC 设计模式编写一个简单的 Java Swing GUI 应用程序。我有一个 MainFrame.java,它实例化 LoginDialog.java (模态 JDialog)。然后,用户使用用户名和密码登录,或者可以注册(通过单击 Jbutton),这会实例化 RegisterDialog.java(从 LoginDialog 实例化 JDialog)。我还有一个 Controller.java 类,它连接到 Database.java,并允许与数据库交互。 MainFrame对象可以通过 Controller 对象与数据库交互。在 RegisterDialog 上,当用户按下提交时,我想验证用户名是否尚未被占用。如何从 RegisterDialog 的数据库获取数据?另外,我如何从 LoginDialog 获取数据(我应该让 MainFrame 监听从 LoginDialog 触发的 DataRequestEvent 吗?)

public class Controller {
private Database db;
public Controller(){
db = new Database();
}
}
public class MainFrame extends JFrame{
private LoginDialog loginDialog;
private Controller controller;
public MainFrame(){
controller = new Controller();
loginDialog = new LoginDialog();
loginDialog.setVisible(true);
//...
}
}
public class LoginDialog extends JDialog{
//form fields...
private JButton regBtn;
private RegisterDialog registerDialog;
public LoginDialog(){
registerDialog = new RegisterDialog();
regBtn = new JButton("Register");
regBtn.addActionListener(new ActionListener(){
registerDialog.setVisible(true);
});
}
}

public class RegisterDialog extends JDialog{
//...
private JButton submitBtn;
public RegisterDialog(){
submitBtn = new JButton();
submitBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
validateUsername();
}
});
}
public void validateUsername(){
//here I need to check whether username is already in DB (sqlite)
}
}

最佳答案

正如所讨论的here ,“并非每个交互都需要通过应用程序的 Controller ”,但身份验证和注册是 Controller 管理的合理候选者。如概述here ,您的 Controller 可以直接操作您的数据模型,并且监听 View 应该相应地更新自己。如图here ,Swing提供了多种方法来实现observer pattern为了处理此类通知。确切的细节取决于您的应用程序处理模态的方式,但您的身份验证和注册对话框可以触发合适的 PropertyChangeEvent 来根据需要通知监听器。示例可参见 herehere .

关于java - MVC Java Swing如何从 View 正确从数据库获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com