OOP 继承,parents 变量值未在 child 上更新
OOP inheritence, parents variable value not updated on child
这是一个简单的登录处理程序,当我把它放在同一个 class 上时,我从来没有遇到过这样的问题。然后我试着把它放在 child class 上,但我不知道发生了什么。
这是 GUI class
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 class
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
可能是因为 GUIController
访问的 jPasswordFieldPasswordLoginPane
与其他 gui 访问的不同,要做到这一点,您必须将对象传递给 GUIController
class,比如在构造函数或 setter 方法中传递引用,然后在 GUIController
中访问正确的 jPasswordFieldPasswordLoginPane
.
这是一个简单的登录处理程序,当我把它放在同一个 class 上时,我从来没有遇到过这样的问题。然后我试着把它放在 child class 上,但我不知道发生了什么。 这是 GUI class
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 class
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
可能是因为 GUIController
访问的 jPasswordFieldPasswordLoginPane
与其他 gui 访问的不同,要做到这一点,您必须将对象传递给 GUIController
class,比如在构造函数或 setter 方法中传递引用,然后在 GUIController
中访问正确的 jPasswordFieldPasswordLoginPane
.