Java 调用方法?

Java 调用方法?,java,swing,jdbc,methods,jtable,Java,Swing,Jdbc,Methods,Jtable,好的。我写了上面的代码,我需要从另一个类调用它。我怎么做? 另外,它在DefaultTableModel prodt=(DefaultTableModel)protable.getModel()中给出了这个错误。错误为非静态变量protable,无法从静态上下文引用 public static void refreshProtable() { try { Statement s1 = Db.connectDb().createStatement(); Re

好的。我写了上面的代码,我需要从另一个类调用它。我怎么做? 另外,它在
DefaultTableModel prodt=(DefaultTableModel)protable.getModel()中给出了这个错误。错误为非静态变量protable,无法从静态上下文引用

public static void refreshProtable() {
    try {
        Statement s1 = Db.connectDb().createStatement();
        ResultSet rs1 = s1.executeQuery("SELECT * FROM product WHERE status='" + 0 + "'");

        DefaultTableModel prodt = (DefaultTableModel) protable.getModel();
        while (rs1.next()) {
            Vector v1 = new Vector();
            v1.add(rs1.getString("pid"));
            v1.add(rs1.getString("pname"));
            v1.add(rs1.getString("sp_rt"));
            v1.add(rs1.getString("sp_wh"));
            v1.add(rs1.getString("um"));
            Statement s2 = Db.connectDb().createStatement();
            ResultSet rs2 = s2.executeQuery("SELECT * FROM stock WHERE pid='" + rs1.getString("pid") + "'");
            if (rs2.next()) {
                v1.add(rs2.getString("qty"));
            }
            prodt.addRow(v1);
            s2.close();
        }
        s1.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

将变量标记为static或使方法非static

私有静态DefaultTableModel可移植


publicstaticvoidrefreshprotable(){…}

将变量
protable
标记为静态或使方法非静态

私有静态DefaultTableModel可移植


publicstaticvoidrefreshprotable(){…}

由于该方法是静态的,因此可以使用它所在的类名调用它

例如

其名称如下:

A.b();

更新静态变量的工作方式可能很方便,这里有一个起点:

由于该方法是静态的,所以可以使用它所在的类名来调用它

例如

其名称如下:

A.b();

更新自己静态变量的工作方式可能很方便,这里有一个起点:

您需要使
可移植
成为静态的,因为您只能从静态方法访问静态变量

private static DefaultTableModel protable;

public static void refreshProtable() { }
您试图调用的变量是实例级变量

静态变量

  • 它是属于类而不是对象(实例)的变量

  • 静态变量只在执行开始时初始化一次。在初始化任何实例变量之前,将首先初始化这些变量

  • 类的所有实例共享的单个副本

  • 静态变量可以通过类名直接访问,不需要任何对象

  • 语法:

静态方法

  • 它是属于类而不是对象(实例)的方法
  • 静态方法只能访问静态数据。它无法访问非静态数据(实例变量)

  • 静态方法只能调用其他静态方法,不能从中调用非静态方法

  • 静态方法可以通过类名直接访问,不需要任何对象

  • 语法:

  • 静态方法无论如何都不能引用“this”或“super”关键字


您需要使
可移植
成为静态的,因为您只能从静态方法访问静态变量

private static DefaultTableModel protable;

public static void refreshProtable() { }
您试图调用的变量是实例级变量

静态变量

  • 它是属于类而不是对象(实例)的变量

  • 静态变量只在执行开始时初始化一次。在初始化任何实例变量之前,将首先初始化这些变量

  • 类的所有实例共享的单个副本

  • 静态变量可以通过类名直接访问,不需要任何对象

  • 语法:

静态方法

  • 它是属于类而不是对象(实例)的方法
  • 静态方法只能访问静态数据。它无法访问非静态数据(实例变量)

  • 静态方法只能调用其他静态方法,不能从中调用非静态方法

  • 静态方法可以通过类名直接访问,不需要任何对象

  • 语法:

  • 静态方法无论如何都不能引用“this”或“super”关键字


您可以将功能设置为非静态或将可移植对象设置为静态

总之,在静态函数中不能引用非静态变量


但您可以在非静态函数中引用静态变量

您可以将函数设置为非静态或将可移植对象设置为静态

总之,在静态函数中不能引用非静态变量


但您可以在非静态函数中引用静态变量

请添加一个语言标记-这不仅是为了帮助其他人确定您使用的语言,它还应该允许语法highlighter在您的代码上正确工作。请包括您声明可移植的代码。请添加语言标记-不仅是为了帮助其他人确定您使用的语言,它还应该允许语法highlighter在您的代码上正确工作。请包括您声明可移植的代码。但我需要在单击按钮后从另一个类调用此方法?如果我使该方法成为非静态的,我仍然能够调用它吗?您需要在单击按钮期间创建该类的实例,然后调用该方法。但我需要在单击按钮后从另一个类调用此方法?如果我使该方法成为非静态的,我仍然能够调用它吗?您需要在单击按钮期间创建该类的实例,然后调用该方法。