今天整个晚上都在想为什么我的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,这别的人没有提到(<-.<-当然,这是默认知道的嘛....)