从ArrayList加载数据到DefaultTableModel

时间:2015-12-15 16:39:43

标签: java arraylist jtable defaulttablemodel

请问我正在尝试将存储在ArrayList中的数据加载到DefaultTableModel,但我没有看到数据出现。请查看下面的代码。

// this is to save to the array.
    ArrayList<MusicEdit> musiclist = new  ArrayList<MusicEdit>();
    code = Integer.parseInt(txtAddMusicCode.getText());
    title = txtAddMusicTitle.getText();
    artist = txtAddMusicArtist.getText();
    price = Integer.parseInt(txtAddMusicprice.getText());
    MusicEdit s = new MusicEdit(code, title, artist, price);
    musiclist.add(s);
    JOptionPane.showMessageDialog(null, "Added Successfully");

加载表格模型,这就是我所拥有的。

public class DisplayMusicCD extends javax.swing.JFrame {
    // Here is to load the TableModel
    String[] columnName = {"Code", "Title", "Artist", "Price"};
    DefaultTableModel dtm = new DefaultTableModel(columnName, 0);
    ArrayList<MusicEdit> musiclist= new  ArrayList<MusicEdit>();     

public void loadAll(){

    for (Object s : musiclist) {
       dtm.addRow( (Object[]) s);
    }

    tblMusic.setModel(dtm);
}

public DisplayMusicCD() {      

    initComponents();
    loadAll();
}

请问我在这里丢失了什么,表格会加载,但只显示列名,但数据不会显示。我尝试使用AbstractTableModel,但我没有办法解决它。所以现在不是一个选择。 提前谢谢。

3 个答案:

答案 0 :(得分:2)

Results

我在这里编码,给你并想出如何做到这一点。试一试,我应该为你工作。

答案 1 :(得分:1)

我可以从以下代码中看到您的用户界面

public class DisplayMusicCD extends javax.swing.JFrame {
    // Here is to load the TableModel
    String[] columnName = {"Code", "Title", "Artist", "Price"};
    DefaultTableModel dtm = new DefaultTableModel(columnName, 0);
    ArrayList<MusicEdit> musiclist= new  ArrayList<MusicEdit>();
    ...

您正在创建一个新的MusicEdit数组列表,并在列表上进行迭代,因为它刚刚创建时没有添加任何对象。

您需要遍历在第一部分代码中创建的MusicEdit列表。实际上已将对象添加到列表中的位置。

MusicEdit s = new MusicEdit(code, title, artist, price);
musiclist.add(s);
JOptionPane.showMessageDialog(null, "Added Successfully");

尝试引用已添加元素的音乐列表并对其进行迭代。

答案 2 :(得分:0)

// this is to save to the array.
    ArrayList<MusicEdit> musiclist = new  ArrayList<MusicEdit>();
    code = Integer.parseInt(txtAddMusicCode.getText());
    title = txtAddMusicTitle.getText();
    artist = txtAddMusicArtist.getText();
    price = Integer.parseInt(txtAddMusicprice.getText());
    MusicEdit s = new MusicEdit(code, title, artist, price);
    musiclist.add(s);
    JOptionPane.showMessageDialog(null, "Added Successfully");

这段代码很好,代码第5行的第二个和平,

ArrayList<MusicEdit> musiclist= new  ArrayList<MusicEdit>(); 

在这里,您要创建新对象musiclist,该对象为null。要从列表中加载数据,您需要获取该列表。如果您分享您的课程,那么我可以相应地重构您的代码。