簡體   English   中英

從ArrayList加載數據到DefaultTableModel

[英]Loading Data from ArrayList Unto a 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,但我沒有辦法解決它。 所以現在不是一個選擇。 提前致謝。

    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();
}

我在這里編碼,給你並想知道如何做到這一點。 試一試,我應該為你工作。

我可以從下面的代碼中看到您的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");

嘗試引用已添加元素的音樂列表並對其進行迭代。

// 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。 要從列表中加載數據,您需要獲取該列表。 如果您分享您的課程,那么我可以相應地重構您的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM