Для пользовательской TableModel я переопределяю isCellEditable , который всегда возвращает true.
Я также переопределяю setValueAt , но не знаю, как использовать метод, так что JTable отражает изменения, сделанные путем редактирования.
Ниже приведен модифицированный код для PersonTableModel: -
class PersonTableModel extends AbstractTableModel{
public int getRowCount(){
return 10 ;
}
public int getColumnCount(){
return 1 ;
}
public String getColumnName(int c){
return "Name" ;
}
public Object getValueAt(int r, int c){
return "Person " + ++r ;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true ;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//what goes here
}
}
С уважением,
Rits
Edit:
Как подсказывают члены формы, ниже приведен код, в котором я использую PersonTableModel: -
public class CustomTableModel{
@SuppressWarnings("deprecation")
public static void main(String[] args){
JFrame frame = new PersonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
frame.show();
}
}
class PersonFrame extends JFrame{
@SuppressWarnings("deprecation")
public PersonFrame(){
setTitle("PersonTable");
setSize(600, 300);
TableModel model = new PersonTableModel() ;
JTable table = new JTable(model);
getContentPane().add(new JScrollPane(table), "Center") ;
show() ;
}
}