该默认渲染器和编辑器通常对于大多数的数据类型足够的,但你可以自定义渲染和编辑的需要。
附录:我不熟悉您的片段中显示的方法。而是
TableModelListener向模型注册,如下所示,并使用保证的粒度更新数据库。另请参见
如何使用表:侦听数据更改
。
附录:@kleopatra关于您是正确的
TableCellEditor。一个方便的方式来通知听众是调用超级实现。请注意,
delegateinvokes
fireEditingStopped()。
public class NewJavaGUI extends JPanel { private final JTable table; public NewJavaGUI() { String[] colNames = {"C1", "C2", "C3"}; DefaultTableModel model = new DefaultTableModel(colNames, 0) { @Override public boolean isCellEditable(int row, int col) { // return your actual criteria return true; } @Override public Class getColumnClass(int col) { // return your actual type tokens return getValueAt(0, col).getClass(); } }; // Add data; note auto-boxing model.addRow(new Object[]{"A1", "A2", 42}); model.addRow(new Object[]{"B1", "B2", 42d}); model.addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { // DML as indicated } }); table = new JTable(model); this.add(table); } private void display() { Jframe f = new Jframe("NewJavaGUI"); f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); f.add(this); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new NewJavaGUI().display(); } }); }}


