将ArrayList中的值插入JTable

时间:2017-03-29 15:42:59

标签: java swing arraylist jtable defaulttablemodel

public void populateJTable() {        
    DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
    Object[] rowData = new Object[4];
    TrackService ts = new TrackService();
    ArrayList<Track> tracks = ts.jsonToTracks();

    for (int i = 0; i < tracks.size(); i++) {
        rowData[0] = tracks.get(i).getTrackName();
        rowData[1] = tracks.get(i).getArtist();
        model.addRow(rowData);
    }
    jTable1 = new JTable(model);
}

在我的json文件中,我存储了一个存储5个值的mp3文件的元数据。我的jsonToTracks&#39; method将它们存储在ArrayList中。 我试图从我的ArrayList中获取2个值(trackName和artist)并在我的JTable中显示它们。 我的JTable有4列 - 名字,艺术家,钥匙,心情。我试图将trackName和Artist存储在相应的列中。 Key和Mood列应为空白,并且应填充Name和Artist字段。 我无法看到自己做错了什么,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

也许你应该尝试,将你的rowData初始化转移到for循环中。

public void populateJTable() {        
    DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
    TrackService ts = new TrackService();
    ArrayList<Track> tracks = ts.jsonToTracks();

    for (int i = 0; i < tracks.size(); i++) {
        Object[] rowData = new Object[4];
        rowData[0] = tracks.get(i).getTrackName();
        rowData[1] = tracks.get(i).getArtist();
        model.addRow(rowData);
    }
    jTable1 = new JTable(model);
}

答案 1 :(得分:2)

jTable1 = new JTable(model);

我怀疑问题是你正在创建一个新的JTable,但你从不将表格添加到框架中。

相反,你应该使用:

jTable1.setModel( model );

这将替换现有JTable中的数据,我假设您已添加到已添加到框架中的JScrollpane