public FileSaveSample() {
initComponents();
adapter = new SongTableAdapter();
tblSong.setModel(adapter);
}
int index = tblSong.getSelectedRow();
Song s = new Song();
s.setTitle(txtTitlex.getText());
s.setArtist(txtArtistx.getText());
s.setGenre((String)cmbGenre1.getSelectedItem());
adapter.set(index,s);
我该怎么做才能更换数据? adapter.set(index,s);
无法正常工作,因为我使用了表适配器,但是在arraylist中它正在工作我该怎么办?
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import java.util.List;
public class SongTableAdapter extends AbstractTableModel {
private String[] columns = {"Title", "Artist", "Genre"};
private List<Song> songs;
public SongTableAdapter() {
songs = new ArrayList<Song>();
}
@Override
public int getRowCount() {
return songs.size();
}
@Override
public int getColumnCount() {
return columns.length;
}
public List<Song> getSongs() {
return songs;
}
public void setSongs(List<Song> songs) {
this.songs = songs;
fireTableDataChanged();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex) {
case 1:
return songs.get(rowIndex).getArtist();
case 2:
return songs.get(rowIndex).getGenre();
default:
return songs.get(rowIndex).getTitle();
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Song song = songs.get(rowIndex);
switch(columnIndex) {
case 0:
song.setTitle(String.valueOf(aValue));
break;
case 1:
song.setArtist(String.valueOf(aValue));
break;
case 2:
song.setGenre(String.valueOf(aValue));
break;
}
}
@Override
public String getColumnName(int i) {
return columns[i];
}
public String[] getColumns() {
return columns;
}
public void add(Song song) {
songs.add(song);
fireTableDataChanged();
}
public void remove(int i) {
songs.remove(i);
fireTableDataChanged();
}
public void clear() {
songs.clear();
fireTableDataChanged();
}
public Song get(int index) {
return songs.get(index);
}
public int size() {
return songs.size();
}
}
答案 0 :(得分:0)
这会解决您的问题吗?
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Song song = songs.get(rowIndex);
switch(columnIndex) {
case 0:
song.setTitle(String.valueOf(aValue));
break;
case 1:
song.setArtist(String.valueOf(aValue));
break;
case 2:
song.setGenre(String.valueOf(aValue));
break;
}
fireTableDataChanged();
}
当然,请调用此方法而不是adapter.set(index,s);