JTable 显示来自 Mysql table 的同一行

JTable displaying the same row from Mysql table

我正在展示构造 JTable 的方法,错误是在 for (int i = 1; i <= numero_columnas; i++) 循环内添加行时,或者 DefaultTableModel model = new DefaultTableModel(); 的声明方式,我找不到错误。


public void verTablaTable (Connection db, String nombre) throws Exception{
    Statement stmt=db.createStatement();
    ResultSet sst_ResultSet = stmt.executeQuery("SELECT * FROM "+nombre);
    ResultSetMetaData md = sst_ResultSet.getMetaData();
    int numero_columnas = md.getColumnCount();
    DefaultTableModel model = new DefaultTableModel();
    for (int i=1;i<=numero_columnas; i++){
        model.addColumn(md.getColumnName(i));
    }
    JTable tabla =new JTable(model);
    DefaultTableModel model1 = (DefaultTableModel) tabla.getModel();
    Vector row = new Vector();
    row.setSize(numero_columnas);
    while (sst_ResultSet.next()){
        for (int i = 1; i <= numero_columnas; i++){
            row.set(i-1,sst_ResultSet.getString(i));
        }
        model1.addRow(row);
    }
    tabla.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    JScrollPane sp_vertabla = new JScrollPane(tabla);
    sp_vertabla.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    sp_vertabla.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    sp_vertabla.setBounds(50,30,700,500);
    JPanel cont_vertabla = new JPanel(null);
    cont_vertabla.setPreferredSize(new Dimension(750,600));
    cont_vertabla.add(sp_vertabla);
    f_vertabla.setContentPane(cont_vertabla);
    f_vertabla.pack();
    f_vertabla.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    //f_vertabla.setResizable(false);
    f_vertabla.setVisible(true);
    f_vertabla.addWindowListener(this);
}

这是 JTable 的样子


上图中列出的行是mysql table

中的最后一行

尝试添加行

Vector row = new Vector();

在 while 循环中。