【问题标题】:Loading Data from ArrayList Unto a DefaultTableModel将 ArrayList 中的数据加载到 DefaultTableModel
【发布时间】:2016-03-21 13:34:21
【问题描述】:

请我尝试将存储在 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 但我没有解决它。所以它目前不是一个选择。 提前致谢。

【问题讨论】:

  • 这确实需要SSCCE。我真的很想看看您在第一个代码 sn-p 之前将哪些数据放入 ArrayList

标签: java arraylist jtable defaulttablemodel


【解决方案1】:
    public class MusicEdit {

    public ArrayList<MusicEdit> getMusiclist() {
        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);
            return musiclist;
        }

    }


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

    DefaultTableModel dtm = new DefaultTableModel(columnName, 0);
    ArrayList<MusicEdit> musiclist = musicEdit.getMusiclist();    

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

    tblMusic.setModel(dtm);
}

    public DisplayMusicCD() {   



    initComponents();
    loadAll();
}

我在这里编写代码,让您了解如何操作。试试看,我应该为你工作。

【讨论】:

  • 我尝试了你的建议,但现在在这一行出现错误 'dtm.addRow( (Object[]) s);' .它说MusicEdit不能被转换为[Ljava.lang.Object。那个错误是什么意思。
  • 我相信你的项目很简单,你能分享一下java类吗?我会让它可以运行并在这里为你发布。
【解决方案2】:

我可以从下面的代码中看到您的 UI

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");

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

【讨论】:

  • 我怎样才能获得我已经拥有的音乐列表的参考。考虑到这一点,MusicEdit 本身就是一个类,DisplayMusicCD 也是。抱歉,如果这个问题很蹩脚,我只是一个新手,并且亲自从事项目工作。
  • 需要在MusicEdit类中添加getter()方法才能获取其他类中的列表。然后你需要在 DisplayMusicCD 类中实例化 MusicEdit 类,并使用对象的 getter() 方法来获取对列表的引用。
【解决方案3】:
// 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,该对象为空。为了从您的列表中加载数据,您需要获取该列表。如果您分享您的课程,那么我可以相应地重构您的代码。

【讨论】:

  • 请问如何分享课程。有两个不同的类。
猜你喜欢
  • 2021-03-01
  • 2013-12-29
  • 2019-09-01
  • 1970-01-01
  • 2011-05-18
  • 2014-01-27
  • 2016-04-06
  • 1970-01-01
  • 2016-04-09
相关资源
最近更新 更多