Java 从查询更新JTable

Java 从查询更新JTable,java,swing,user-interface,jtable,derby,Java,Swing,User Interface,Jtable,Derby,目前我有一个DerbyDB和一个带有JTable的UI。现在我也有很多类,但是我需要帮助的是SensorDBConnection和myUImyUI是我的JTable所在的位置,我想做的是从位于我的SensorDBConnection 以下是我的SensorDBConnection中的一个片段,它之所以有效,是因为它正在执行System.outs DefaultTableModel model;//Confused model = new DefaultTableModel(); //Co

目前我有一个DerbyDB和一个带有JTable的UI。现在我也有很多类,但是我需要帮助的是
SensorDBConnection
myUI
myUI
是我的JTable所在的位置,我想做的是从位于我的
SensorDBConnection

以下是我的
SensorDBConnection
中的一个片段,它之所以有效,是因为它正在执行System.outs

DefaultTableModel model;//Confused
    model = new DefaultTableModel(); //Confused
    jTable1 = new JTable(model);//Confused 

    model.addColumn("TIME");
    model.addColumn("SENSORID");
    model.addColumn("TEMP");
    model.addColumn("HUM");
    model.addColumn("LIGHT");
    model.addColumn("VOLTAGE");

        while(results.next())
        {
            time = results.getInt(1);
            id = results.getInt(2);
            temp = results.getInt(3);
            hum = results.getInt(4);
            light = results.getInt(5);
            voltage = results.getInt(6);
            model.addRow(new Object[]{time,id,temp,hum,light,voltage});
            Sensor sens = new Sensor(id, temp, hum, light, voltage);
            sensors.add(sens);               
            //System.out.println(sens);
        }

        results.close();
        stmt.close();

因此,我现在做的基本上是查询我的数据,然后尝试将其推送到另一个类上的JTabel,我不知道如何创建它们之间的链接。

如果我正确理解了您的问题,您应该能够在myUI中创建SensorDBConnection的实例。这样,您可以调用方法、查询等。。。myUI中的SensorDBConnection。从将UI与数据管理分离开始。与其让
SensorDBConnection
返回
TableModel
,不如让它返回构建数据模型所需的数据

例如

public class SensorDBConnection extends ... {
    public List<Sensor> loadData() {
        List<Sensor> sensors = new ArrayList<>(25);
        try {
            //...
            while(results.next())
            {
                time = results.getInt(1);
                id = results.getInt(2);
                temp = results.getInt(3);
                hum = results.getInt(4);
                light = results.getInt(5);
                voltage = results.getInt(6);
                model.addRow(new Object[]{time,id,temp,hum,light,voltage});
                Sensor sens = new Sensor(id, temp, hum, light, voltage);
                sensors.add(sens);               
            }
        } finally {
            try {
                results.close();
            } catch (Exception exp) {
            }
            try {
                stmt.close();  
            } catch (Exception exp) {
            }
        }
        return sensors;
    }
}
然后在
MyUI
类中从
SensorDBConnection
调用
loadData
方法,只需创建
TableModel的一个实例,并将其应用于您已经拥有的
JTable`实例

 public class MyUI extends ... {
     private JTable table;
     private SensorDBConnection sensor;
     //...
     protected void loadTableContents() {
         TableModel model = null;
         try {
            model = new SensorTableModel(sensor.loadData());
         } catch (SQLException exp) {
             // Handle exception
         }
         table.setModel(model);
     }
 }

例如…

我将创建自己的TableModel子类,该子类特定于返回的数据。然后,一旦您将TableModel中的数据设置为新数据,请调用fireTableDataChanged()。

好的,让我继续并通过google了解如何做到这一点。。谢谢你的回复,谢谢!我试试看
public class SensorDBConnection extends ... {
    public List<Sensor> loadData() {
        List<Sensor> sensors = new ArrayList<>(25);
        try {
            //...
            while(results.next())
            {
                time = results.getInt(1);
                id = results.getInt(2);
                temp = results.getInt(3);
                hum = results.getInt(4);
                light = results.getInt(5);
                voltage = results.getInt(6);
                model.addRow(new Object[]{time,id,temp,hum,light,voltage});
                Sensor sens = new Sensor(id, temp, hum, light, voltage);
                sensors.add(sens);               
            }
        } finally {
            try {
                results.close();
            } catch (Exception exp) {
            }
            try {
                stmt.close();  
            } catch (Exception exp) {
            }
        }
        return sensors;
    }
}