0

我是 Java 中 OOP 方法的新手,我的系统有一些问题。我目前正在做一个简单的 GUI 系统。在 jForm 中,据说我必须将所有代码作为程序方法在那里编写。但我想尝试在单独的类(OOP)中编写代码。在主窗体中我所要做的就是调用我在另一个类上创建的方法。但我的主要问题是我将如何从一个表单调用或调用一个对象到另一个类。

这是一个例子......

public void checkUser(){
    try {
        sql = "SELECT accessLevel FROM user_accounts WHERE userName = 'admin'";
        stmt = conn.createStatement();
        rs = stmt.executeQuery(sql);
        rs.first();
        int accessLvl = rs.getInt(1);
        if (accessLvl != 1){
            btnAddUser.setEnabled(false);
            jPanel3.setEnabled(false);
        }
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, "Exception on Verifying User");
    }
}

我希望将此方法 ( checkUser()) 写在另一个类中,而不是放在主窗体中。但我的问题是我无法访问在主窗体中启动的对象btnAddUser(按钮名称)和(面板名称)。JPanel13如果我将直接使用我怎么可能访问这些对象,以便我将它们访问到其他类。

4

4 回答 4

0

教程可能会提供一些见解,并使您走上正确的道路。还有更多不同的解决方案和教程。

于 2013-01-16T12:25:24.997 回答
0

但我的问题是我无法访问在主窗体中启动的对象 btnAddUser(按钮名称)和 JPanel13(面板名称)。

您需要将其声明为类中的类变量,分配适当的getter 和 setter 方法,然后实例化此类以检索值。

正如尼克所说,您需要在逻辑上分离代码,这将使整个设计模块化。在这里,您可以将数据库代码移动到一个单独的DataAccess类中并公开查询方法。连接对象可以在构造函数中创建。

于 2013-01-16T11:50:44.277 回答
0

您可以将此方法作为静态方法写入另一个类,如下所示,它接受两个参数,一个是 JButton,另一个是 JPanel

 public static void checkUser(JButton btnAddUser,JPanel jPanel3){
   try {
      sql = "SELECT accessLevel FROM user_accounts WHERE userName = 'admin'";
      stmt = conn.createStatement();
      rs = stmt.executeQuery(sql);
      rs.first();
      int accessLvl = rs.getInt(1);
      if (accessLvl != 1){
          btnAddUser.setEnabled(false);
          jPanel3.setEnabled(false);
      }
  }
  catch(Exception e){
    JOptionPane.showMessageDialog(null, "Exception on Verifying User");
  }

}

并且您可以从之前编写代码的位置调用此方法,例如

 NewClass.checkUser(btnAddUser,jPanel3);

NewClass 是您在其中编写此 checkUser() 方法的类。

您还需要将参数传递给诸如 sql 字符串、Statement 和 ResultSet 对象之类的方法,或者将它们声明为静态,以便您可以在任何地方使用类名轻松访问它们。

于 2013-01-16T11:52:24.517 回答
0

你的checkUser方法应该:

  • 接受一个参数,该参数是要检查的用户名(执行此操作时java.sql.Statement用 a替换java.sql.PreparedStatement)。
  • 返回调用代码(您的表单)用于根据需要启用或禁用组件的布尔值。
  • 抛出调用代码(您的表单)可以捕获并显示消息对话框的异常。

除其他外,OOP 是关于关注点的分离——您的表单处理 UI,带有checkUser方法的类处理用户身份验证。

顺便说一句,checkUser如果身份验证失败,通常会引发异常的函数。这是因为使用该方法的人很容易无法检查返回值并允许未经身份验证的用户进入系统。

于 2013-01-16T11:38:33.570 回答