我目前停留在一段代码上。我有一个数据库,并希望将信息放入arrayList。在稍后阶段,需要将此arrayList放入JTable中。目前我可以获取要打印的所有行,但是所有行都打印为包含所有信息的一行,而不是每行打印为自己的行。不确定这是否有意义,我的代码如下:
ArrayList<ArrayList<String>> movies = new ArrayList<ArrayList<String>>();
ArrayList<String> movs = new ArrayList<String>();
while(rs.next()){
movs.add(rs.getString("movie_id"));
movs.add(rs.getString("movie_name"));
movs.add(rs.getString("description"));
movies.add(movs);
for(ArrayList<String> ls : movies) {
System.out.println(Arrays.deepToString(ls.toArray()));
}
}
输出如下:
[1,超越松树的地方,一名摩托车特技骑士(Gosling)转向抢劫银行,以此来为他的前情人(门德斯)及其新生儿提供服务。],2,Riddick,被他背叛Riddick在一个阳光明媚的星球上为自己的种类而死,为了对抗外星野兽而战斗,并且变得比以往任何时候都更加强大。] ETCETC
[1,超越松树的地方,一名摩托车特技车手(Gosling)转向抢劫银行,以此来为他的前情人(门德斯)和他们的新生儿提供服务。,2,Riddick,被他自己背叛在一个被阳光照射的星球上,Riddick为了生存而战斗,并且变得比以往任何时候都更加强大。 ETC等 对于接下来的22行(这是我访问的表中的行数)
其他信息:
重复一行中的所有行。此外,如果可以在JTable前端给出任何提示,那将是非常棒的。我不知道如何将上面的(在代码中)列名和前面提到的行作为JTable的一部分。非常感谢并为我的noobery道歉!产品:&gt;
JTable代码 -
JTable table = new JTable((TableModel) movies);
JScrollPane spane = new JScrollPane(table);
setContentPane(spane);
setVisible(true);
PS:所有这些都在actionListener中。
答案 0 :(得分:1)
您始终使用相同的列表对象来添加元素。只需在循环中移动
while(rs.next()){
ArrayList<String> movs = new ArrayList<String>();
movs.add(rs.getString("movie_id"));
movs.add(rs.getString("movie_name"));
movs.add(rs.getString("description"));
movies.add(movs);
for(ArrayList<String> ls : movies) {
System.out.println(Arrays.deepToString(ls.toArray()));
}
}
我会创建一个Movie类并将它们存储在一组电影中:
public class Movie
{
private int id;
private String movieName;
private String description;
//.. constructor
//...getters and setters
}
循环:
ArrayList<Movie> movies = new ArrayList<Movie>();
while (rs.next())
{
Movie movie = new Movie();
movie.setId(rs.getInt("movie_id"));
movie.setMovieName(rs.getString("movie_name"));
movie.setDescription(rs.getString("description"));
movies.add(movie);
}
<强>的JTable:强>