首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么JTable不使用TableCellEditor?

为什么JTable不使用TableCellEditor?
EN

Stack Overflow用户
提问于 2010-11-02 21:12:26
回答 1查看 8.6K关注 0票数 3

MyTableCellEditor的目的是使JTable单元格的行为类似于Excel单元格IOW,在单击单元格后输入值将覆盖而不是附加到现有值。我并不期望下面的代码在第一次通过时就能正常工作,但我确实期望在getTableCellEditorComponent和getCellEditorValue中遇到调试断点。当我使用jTable时,为什么不调用getTableCellEditorComponent或getCellEditorValue?

代码语言:javascript
复制
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();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-02 21:55:44

setCellEditor(TableCellEditor)只为当前活动的单元格设置编辑器(一旦它不再活动,编辑器就会丢失。您希望调用JTable.setDefaultEditor()来为特定类设置默认编辑器。

代码语言:javascript
复制
jTable.setDefaultEditor(String.class, tableCellEditor);

或者,您可以通过TableColumnModel为列设置编辑器,例如

代码语言:javascript
复制
jTable.getColumnModel().getColumn(1).setCellEditor(tableCellEditor);
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4077969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档