MVC Java Swing如何从视图中正确地从数据库获取数据
我正在按照MVC设计模式编写一个简单的JavaSwingGUI应用程序。我有一个MainFrame.java,它实例化LoginDialog.java(模态JDialog)。然后,用户使用用户名和密码登录,或者可以注册(通过单击Jbutton)实例化RegisterDialog.java(从LoginDialog实例化JDialog)。我还有一个Controller.java类,它连接到Database.java,并允许与数据库交互。大型机对象可以通过控制器对象与数据库交互。在RegisterDialog上,当用户按submit时,我想验证用户名是否已被使用。如何从RegisterDialog从数据库中获取数据?另外,我如何从LoginDialog获取数据(我是否应该让大型机侦听将从LoginDialog触发的DataRequestEvent?)MVC Java Swing如何从视图中正确地从数据库获取数据,java,swing,model-view-controller,Java,Swing,Model View Controller,我正在按照MVC设计模式编写一个简单的JavaSwingGUI应用程序。我有一个MainFrame.java,它实例化LoginDialog.java(模态JDialog)。然后,用户使用用户名和密码登录,或者可以注册(通过单击Jbutton)实例化RegisterDialog.java(从LoginDialog实例化JDialog)。我还有一个Controller.java类,它连接到Database.java,并允许与数据库交互。大型机对象可以通过控制器对象与数据库交互。在RegisterD
如前所述,“并非所有交互都需要通过应用程序的控制器”,但身份验证和注册是控制器需要管理的合理候选对象。如上所述,控制器可以直接操作数据模型,侦听视图应该相应地进行更新。如图所示,Swing提供了许多实现的方法来处理此类通知。确切的细节取决于应用程序如何处理模态,但您的身份验证和注册对话框可以触发适当的
PropertyChangeEvent
,根据需要通知侦听器。可以找到示例和。谢谢你的回答,你能给我推荐一本书或一个网站,教我更多关于Swing开发(专业水平)的知识吗?我从一开始就阅读了很多源代码。
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)
}
}