OOP继承,父变量值未在子上更新

时间:2015-07-29 00:57:39

标签: java oop inheritance multiple-inheritance

这是简单的登录处理程序,当把它放在同一个类上时,我从来没有这样的问题。然后我试着把它放在儿童班上,我不知道发生了什么。 这是GUI类

        final static Functions.F_Koneksi F_K = new Functions.F_Koneksi();
        final static Functions.F_Process F_P = new Functions.F_Process();
        final static GUIController F_GUI = new GUIController();
        protected javax.swing.JPasswordField jPasswordFieldPasswordLoginPane;
        protected javax.swing.JTextField jTextFieldUsernameLoginPane;

        ...

        private void jButtonLoginLoginPaneActionPerformed(java.awt.event.ActionEvent evt) {                                                      
            switch (F_GUI.DoLogin()) {
                case 1:
                    cl.show(MainPane, "BuyMovie");   
                    break;
                ...
                default:
                    LoginLabel.setText("username or password ... ");
            }
        } 

这是GUIController类

 int DoLogin(){
        try {
            System.err.println(jTextFieldUsernameLoginPane.getText());
            char[] PassChars = jPasswordFieldPasswordLoginPane.getPassword();
            String Pass = new String(PassChars);
            return F_P.F_Login(jTextFieldUsernameLoginPane.getText(), Pass);
        } catch (SQLException ex) {
            LoginLabel.setText("connection error");
        }
        return 3;
    }       

这是F_Process上的F_Login方法

public int F_Login(String User, String Pass) throws SQLException {
    ResultSet RS = Select("select * from blablabla"); //this query work already
    int level = 8;
    if (RS.next()) {
        level = RS.getInt("Level");
    }

    return level;
} 

问题是当我设置用户和密码textfield时,正确的用户通过了它的工作,但是当用户没有通过它时。我知道我的OOP逻辑有问题,但我不明白在哪里。谢谢

这是让你理解我的意思的图片

http://i.stack.imgur.com/1DsrF.png   http://i.stack.imgur.com/uXmGZ.png

1 个答案:

答案 0 :(得分:1)

也许是因为GUIController没有访问其他gui访问的jPasswordFieldPasswordLoginPane,要做到这一点,你必须将对象传递给GUIController类,就像在构造函数或setter方法中传递引用,并在GUIController中访问正确的jPasswordFieldPasswordLoginPane