如何跨不同的jframe获取文本字段值?

时间:2012-08-13 09:35:37

标签: java user-interface netbeans

我正在创建一个程序,它使用几个不同的交互菜单,允许用户访问系统的不同部分。我正在使用Netbeans来帮助编码。

目前我被困在一项任务上。

当用户通过“登录”表单登录系统时,系统会验证详细信息,并根据凭据将用户重定向到“user_details”或“admin_menu”。那很好用。从那里,用户可以访问一个表单,允许他们更新已保存在数据库中的详细信息。

我发现限制简单用户更新其详细信息的唯一方法是让他们再次登录,然后从中检索他们的详细信息以便更新。这个过程很混乱,但它确实有效。

考虑到这一点我如何检索文本字段“用户名”中的任何内容,该用户名位于jform从另一个jform(User_details)登录,只有登录成功后才会打开User_details jform(一旦发生登录,丢弃并打开user_details)。

顺便说一句,我做了很多研究,但似乎无法找到问题的答案。

这是我登录代码的一部分:

String sql = "select * from user where Username =? and password=?";
        try {
            pst = con.prepareStatement(sql);
            pst.setString(1, username.getText());
            pst.setString(2, password.getText());
            rs = pst.executeQuery();

            int count = 0;
            while (rs.next()) {
                count = count + 1;
            }
            if (count == 1) {
                JOptionPane.showMessageDialog(null, "Access Granted");
                if ("manager@manage.com".equals(t.getText())) {
                    rs.close();
                    pst.close();
                    close();
                    Admin_menu am = new Admin_menu();
                    am.setVisible(true);
                } else {
                    rs.close();
                    pst.close();
                    close();
                    User_details M = new User_details();
                    M.setVisible(true);
                }
            } else {
                JOptionPane.showMessageDialog(null, "Incorrect Username or Password");
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex);

        } finally {
            try {
                rs.close();
                pst.close();
            } catch (Exception ex) {
            }
        }

如何让User_details Jform获取文本域用户名中的内容?

5 个答案:

答案 0 :(得分:1)

您可能希望创建一个类,该类表示登录用户在您的应用程序中执行的所有操作的状态。传统上,您将其称为会话。登录用户是该会话的属性,因此您将其保存在该字段中。您将会话传递到您创建的每个帧中,以便他们都可以访问它。

用户退出时会话无效。

然后,从您的框架,组件,无论如何,您都可以从会话中获取当前用户。

但是,请尝试将前端与后端代码分开。查看MVC pattern

答案 1 :(得分:0)

尝试将变量声明为public并使用其他想要使用它们的jframe初始化它们,例如

public your class{

    initComponents();
    String a;


}

希望这有助于:)

答案 2 :(得分:0)

您可以在存储信息的类变量中创建一个类“BasicView”,因此该类的每​​个实例都可以使用ist。然后你只需要扩展这个基本类,或者只使用BasicView.value或BasicView.getValue()。 您还可以使用synchronized方法更改此var。

public class BasicView {
    private static Object value;

    public synchronized void setValue(Object value) {
        this.value = value;
    }

    public Oject getValue() {
        return value;
    }
    .
    .
    .
}

我用它来初始化一个ServicesLocator来获取所有bean中的服务。 :)

编辑:另外看看MVC模式并在控制器(基本控制器)或类似的东西中使用它。

答案 3 :(得分:0)

1。使用Composition,并确保您的GUI类始终在从不同JFrame引用时返回相同的对象。

2。这可以使用Singleton Principle实现。

答案 4 :(得分:0)

创建一个名为session的类,如下所示:

public class Session {

    public static String userName = "";

}

当登录发生时,将Session.userName的值设置为给定的userName,并在用户注销时将Session.userName设置为“”。只需键入Session.userName即可访问Session.userName。其他会话变量也应该在Session类中定义。