2D ArrayList For DataBase Table

时间:2014-02-04 11:42:53

标签: java swing ms-access arraylist jtable

我目前停留在一段代码上。我有一个数据库,并希望将信息放入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中。

1 个答案:

答案 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:

Here a very good tutorial on JTables