java从另一个类访问JTextfield中的值
如果我调用getter方法时没有显示任何内容,有人能检查我的代码吗。不知怎的,它没有存储我试图使用的文本字段的输入
以下是一些代码:
A类的登录按钮
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
System.out.println("1"+getuser());
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/devweb", "root", "123456");
PreparedStatement statement = con.prepareStatement("select User,pwd from account");
ResultSet rs = statement.executeQuery();
name = user.getText();
String pwd = jTextField2.getText();
while (rs.next()) {
if (rs.getString("User").equals(name) && rs.getString("pwd").equals(pwd)) {
result now = new result();
now.res();
dispose();
System.out.println("2"+getuser());
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
然后点击B类中的查看按钮:
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
log qwe=new log();
jTextField1.setText(qwe.getuser());
System.out.println(qwe.getuser());//when I print this it just says null
}
注意:在这一点上,我只是想看看它是否能够从登录页面获得输入,这就是为什么我的代码只是打印输入的用户名
# 1 楼答案
是的,有点不对劲:你使用了静态。Getter方法应该是实例方法,因此不应该涉及静态
我在这类代码中经常看到的另一个问题是当您试图提取文本时?它是事件驱动的,并且只在文本添加到JTextField后才调用?或者,当用户还没有机会输入文本时,您是否尝试在程序启动时调用此方法?很难说这是否会影响您,因为我们对您的代码和问题只有有限的了解
另一个常见的问题是试图从阴影对象而不是当前显示的实际对象中提取信息。您的第二个代码窗口表明这可能是一个问题,因为您在试图从中提取信息之前立即创建了一个日志对象。这可能是第二个日志对象,根本无法显示
要查看这些问题是否会影响您,或者您是否需要更多或更深入的建议,您可能希望显示更多代码
编辑2
关于您最近的编辑,如果日志是一个模式对话框,那么您的代码可以工作,但仍然很难说,因为您添加的代码为我们提供了一些信息,但仍然不够。不要灰心,因为有一种艺术可以决定哪些信息/代码不够发布,哪些信息不够,哪些信息太多。通过练习,你会在这方面做得更好