将数据从 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");
并加载 table 模型,这就是我所拥有的。
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();
}
拜托,我在这里遗漏了什么,Table 加载但仅显示列名,但未显示数据。我尝试使用 AbstractTableModel 但我并没有绕过它。所以它目前不是一个选择。
提前致谢。
// 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
,它是空的。为了从您的列表中加载数据,您需要获取该列表。如果你分享你的 class 那么我可以相应地重构你的代码。
我可以从下面的代码中看出您的 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");
尝试获取对已添加元素的音乐列表的引用并对其进行迭代。
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();
}
我在这里编码,让你知道如何去做。试一试我应该为你工作。
拜托,我正在尝试将存储在 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");
并加载 table 模型,这就是我所拥有的。
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();
}
拜托,我在这里遗漏了什么,Table 加载但仅显示列名,但未显示数据。我尝试使用 AbstractTableModel 但我并没有绕过它。所以它目前不是一个选择。 提前致谢。
// 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
,它是空的。为了从您的列表中加载数据,您需要获取该列表。如果你分享你的 class 那么我可以相应地重构你的代码。
我可以从下面的代码中看出您的 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");
尝试获取对已添加元素的音乐列表的引用并对其进行迭代。
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();
}
我在这里编码,让你知道如何去做。试一试我应该为你工作。