【问题标题】:How to get data from view class in controller class如何从控制器类中的视图类获取数据
【发布时间】:2017-01-18 18:08:31
【问题描述】:

我想在 View 类中获取用户名和密码 但来自控制器类

如何使用方法 loginbtnMouseClicked 从控制器类调用它来获取数据

private void loginbtnMouseClicked(java.awt.event.MouseEvent evt) {

    //what should i have here?                  

} 

查看类代码

 usernamefield = new javax.swing.JTextField();
 passfield = new javax.swing.JPasswordField();
 loginbtn = new javax.swing.JLabel(); //Login Button is JLabel

private void loginbtnMouseClicked(java.awt.event.MouseEvent evt) {

    //what should i have here?                  

}                


 /*
  *returns the username from the username field
 */
 public String getUserName(){
    return usernamefield.getText();
}



/*
  *returns the password from the password field
 */
public char[] getPass(){
    return passfield.getPassword();
}

控制器类代码

This is what am asking..........

模型类代码

如果用户名和密码都是 admin,则只有一种方法返回 true

public Boolean isAccountHolder(String username, char[] password){
    return username.equalsIgnoreCase("admin") && password.equals("admin");
}

【问题讨论】:

  • 仅仅因为您使用 MVC 并不意味着存在三个定义良好的“视图”、“控制器”和“模型”类。

标签: java model-view-controller


【解决方案1】:

首先,不知道为什么“loginbtn”会是JLabel...

在您的 View 代码中,您最好有一些 ActionListener 来定义 click 方法。你没有声明你自己的......

(示例代码)

class MyView extends JPanel { 
    JTextField usernamefield = new javax.swing.JTextField();
    JPasswordField passfield = new javax.swing.JPasswordField();

    Model model = new Model();

    public MyView() {
        // Here you update the View
        add(usernamefield);
        add(passfield);
        JButton button = new JButton("Click");
        add(button);

        // Here the Panel acts as the controller, and updates the model
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                model.setName(getUserName());
                model.setPass(getPass());
            } 
        });
    }

    public String getUserName(){
        return usernamefield.getText();
    }

    public char[] getPass(){
        return passfield.getPassword();
    }
}

另外,请注意:password.equals("admin") 不适用于char[],因为数组不等于字符串。你必须使用new String(password).equals("admin"),但如果你使用纯文本密码,那是一个完全不同的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多