繁体   English   中英

JTable与数组中的数据

[英]JTable with data from array

我试图从数据库中获取结果并将其放入Java表中。 我的数据库如下所示:

users[idu, username, password, ul]
teachers[idt, firstname, secondname, idu]
discipline[idd, name, idt]
class[idc, name, grade]
student[ids, idu, idc, firstname,secondname]
grades[idg, idd, ids, grade]
classskips[idcs, ids, date]

我的表代码如下所示:

public void tablepanel(){


        ConnectDB(serverip, serverport, serverdbname, serverusername, serverpassword);
        Object[] columnNames = {"ID", "Firstname", "Secondname"};
        ArrayList dataouter = new ArrayList();
        try{           

        stgs = conn.createStatement();
        getstudent = ("SELECT ids, firstname, secondname FROM student");
        rsgs = stgs.executeQuery(getstudent);
        rsmd = rsgs.getMetaData();
        columnsNumber = rsmd.getColumnCount();
        System.out.println(columnsNumber);
        while(rsgs.next()){ 
            ArrayList datainner = new ArrayList();
            datainner.add(rsgs.getInt("ids")); 
            datainner.add(rsgs.getString("firstname"));
            datainner.add(rsgs.getString("secondname"));
            dataouter.add(datainner);
            System.out.println(datainner);
        }            
        System.out.println(dataouter);

    }catch(Exception ex){
        JOptionPane.showMessageDialog(null, "Error: " +ex);
    }

    JTable table = new JTable(dataouter, columnNames);

    table.setPreferredScrollableViewportSize(new Dimension(500, 70));

    JScrollPane scrollPane = new JScrollPane(table);
    frame.add(scrollPane);

}

现在如何将结果从数据库添加到表中?

创建一个TableModal并将其设置为表。 还创建一个Modal类,可能是带有idfirstnamesecondname字段以及它们的获取器和设置器的Student 创建TableModal

    public class StudentsTableModal extends AbstractTableModel {

       String[] columnNames = {"ID", "Firstname", "Secondname"};
       Class[] types = { Integer.class, String.class, String.class };
       private ArrayList<Student> data = new ArrayList<Student>();

        public ArrayList<Student> getData() {
            return data;
        }

        public void setData(ArrayList<Student> data) {
            this.data = data;
            fireTableDataChanged();
        }

        public int getRowCount() {
            return data.size();
        }

        public int getColumnCount() {
            return colNames.length;
        }

        @Override
        public Class getColumnClass(int columnIndex) {
            return types[columnIndex];
        }       

        @Override
        public String getColumnName(int column) {
            return colNames[column];
        }

       @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            Student s = data.get(rowIndex);
            switch (columnIndex) {
            case 0:
                return s.getId();
            case 1:
                return s.getFirstname();

            case 2:
                return s.getSecondname();
            }
            return null;
        }
}

现在创建一个实例并设置表模式

StudentsTableModal modal=new StudentsTableModal();
table.setTableModal(modal);

从表中检索数据时,将每一行存储到新的Student对象,然后将该对象存储到ArrayList ,完成后,使用此数据列表在模式上调用setData方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM