2016-12-18 2 views
0
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では何ができるのですか?アダプタ=新しいSongTableAdapter();

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

のこのメソッドを呼び出すと、私はSongTableAdapterが何であるかを知っておくべきどこから? - コードplsを共有する – matheszabi

+0

申し訳ありません、私の投稿を更新します... –

答えて

0

これで問題は解決しますか?もちろん

​​

代わりadapter.set(index,s);

+0

これに1つの要素の更新... "Song @ c06e800" –

関連する問題