JTable 接受vector时只显示数据的第一行

时间:2022-09-21 04:22:42

今天整个晚上都在想为什么我的JTable只显示一行数据


我把数据库单独写成一个类

用一个返回值类型为ArrayList的函数select出相应数据

public ArrayList<String> online() throws SQLException{
		String sql = "select name from user where status = '1'";
		ResultSet rs = stmt.executeQuery(sql);
		ArrayList<String> list = new ArrayList<String>();
		while(rs.next()){
			list.add(rs.getString("name"));
		}
		return list;
	}

之后在界面中new JTable将此ArrayList转化成Vector传入发现只显示一行数据

namelist = db.online();
DefaultTableModel dtm = (DefaultTableModel)table.getModel();
v.addAll(namelist);
dtm.addRow(v);

原因是 此时vector中数据形式是[a,b,c,d]

需要把它拆成一个个Vector

for(int i= 0;i<namelist.size();i++)
{
	Vector<String> v = new Vector<String>();
	v.add(namelist.get(i));
	dtm.addRow(v);
}

每次new一个vector表中加一个

这些本来应该在while(rs.next!)中写的,但是我把数据库类和界面类拆开写了,传递的值是ArrayList所以出现了这个问题

不过也由此得知table一行就是一个vector,这别的人没有提到(<-.<-当然,这是默认知道的嘛....)