Java:为什么JTable不使用TableCellEditor?
发布时间:2020-12-15 08:36:09 所属栏目:Java 来源:网络整理
导读:MyTableCellEditor的目的是使JTable单元的行为类似于Excel单元格IOW,单击单元格后输入一个值,而不是附加到现有值. 我没想到下面的代码会在第一次传递时工作,但我确实希望在getTableCellEditorComponent和getCellEditorValue中遇到调试断点. 当我使用jTable时
MyTableCellEditor的目的是使JTable单元的行为类似于Excel单元格IOW,单击单元格后输入一个值,而不是附加到现有值.
我没想到下面的代码会在第一次传递时工作,但我确实希望在getTableCellEditorComponent和getCellEditorValue中遇到调试断点. 当我使用jTable时,为什么不调用getTableCellEditorComponent或getCellEditorValue? public class MyTable extends javax.swing.JFrame implements TableModelListener { private static final MyTableCellEditor tableCellEditor = new MyTableCellEditor(); ... public MyTable() { initComponents(); jTable.getModel().addTableModelListener(MyTable.this); ... private void initComponents() { // Generated by the Form Editor. jTable = new javax.swing.JTable(); jTable.setCellEditor(tableCellEditor); ... public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor { JComponent component = new JTextField(); public Component getTableCellEditorComponent(JTable table,Object value,boolean isSelected,int rowIndex,int vColIndex) { if (isSelected) { ((JTextField)component).selectAll(); } ((JTextField)component).setText((String)value); return component; } public Object getCellEditorValue() { return ((JTextField)component).getText(); } } 解决方法
setCellEditor(TableCellEditor)仅为当前活动的单元格设置编辑器(一旦它不再处于活动状态,它将丢失.您希望调用JTable.setDefaultEditor()来设置特定类的默认编辑器.
jTable.setDefaultEditor(String.class,tableCellEditor); 或者,您可以通过TableColumnModel为列设置编辑器,例如 jTable.getColumnModel().getColumn(1).setCellEditor(tableCellEditor); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |