从另一个类访问JTextfield中的值

时间:2011-10-21 02:17:51

标签: java swing user-interface textfield

如果有问题,有人可以检查我的代码,因为当我调用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 个答案:

答案 0 :(得分:1)

是的,出了点问题:你使用 static 。 Getter方法应该是实例方法,因此不应该涉及静态。

我经常看到这个代码的另一个问题是你试图提取文本时?它是事件驱动的,只有在将文本添加到JTextField之后才会调用吗?或者,当用户还没有机会输入文本时,您是否尝试在程序启动时调用此方法?很难说这是否会影响你,因为我们对你的代码和问题只有有限的看法。

另一个并不罕见的问题是尝试从阴影对象中提取信息,而不是当前正在显示的实际对象。您的第二个代码窗口表明这可能是一个问题,因为您在尝试从中提取信息之前立即创建了一个日志对象。这可能是第二个日志对象,根本无法显示。

要查看这些问题是否会影响您,或者您是否需要更多或更深入的建议,您可能希望显示更多代码。

编辑2
关于你最近的编辑,如果log是一个模态对话框,你的代码可以工作,但仍然很难说,因为你添加的代码给了我们一些信息,但仍然不够。不要因为有一种艺术来决定什么是没有足够的信息/代码发布在这里与足够的信息与太多的信息相比,不要灰心。通过练习你会更好。