不保留单元格的值

发布于 2024-09-15 18:28:48 字数 945 浏览 2 评论 0原文

发布了 CellEditor。

import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;

public class UserCellEditor extends AbstractCellEditor 
                            implements TableCellEditor {

    JComponent component = new JTextField();

    public Object getCellEditorValue() {
        return ((JTextField) component).getText();
    }

    public Component getTableCellEditorComponent(JTable table, 
            Object value, boolean isSelected, int row, int column) {
        ((JTextField) component).setText((String) value);
        return component;
    }
}

然后我以这样的方式调用表格方法:

UserTable.getColumnModel().getColumn(0).setCellEditor(new UserCellEditor());

单元格正在编辑,但是按Enter键或移动到另一个单元格的结果不被存储,它返回原始值。

我哪里错了或者我做错了什么?

Posted CellEditor.

import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;

public class UserCellEditor extends AbstractCellEditor 
                            implements TableCellEditor {

    JComponent component = new JTextField();

    public Object getCellEditorValue() {
        return ((JTextField) component).getText();
    }

    public Component getTableCellEditorComponent(JTable table, 
            Object value, boolean isSelected, int row, int column) {
        ((JTextField) component).setText((String) value);
        return component;
    }
}

Then I call table method in such way:

UserTable.getColumnModel().getColumn(0).setCellEditor(new UserCellEditor());

The cell is being edited, but the result by pressing the Enter key or move to another cell is not stored, it returns the original value.

Where am I wrong or what I'm doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

左岸枫 2024-09-22 18:28:48

看起来您正在本地 JTextField 中编辑值,而您的数据模型随后在编辑完成后返回未更改的值。您的编辑器需要更新您的模型,按照此示例中的建议。

It looks like you are editing the value in a local JTextField, while your data model is subsequently returning the unchanged value when editing is complete. Your editor needs to update your model, as suggested in this example.

蓝天 2024-09-22 18:28:48

如果您要为列设置 CustomTableCellEditor,则必须在相应 TableModel 的 setValueAt(Object o, int row, int column) 中更新该列(如果您不这样做)不要这样做,新值永远不会更新。顺便说一句,如果您这样定义 CustomTableCellEditor

public class CustomTableCellEditor extends AbstractCellEditor Implements TableCellEditor

您将不需要自己触发事件。

If you are setting a CustomTableCellEditor for a column, that column must be updated in the setValueAt(Object o, int row, int column) of the corresponding TableModel, if you don't do that the new value is never updated. By the way if you define your CustomTableCellEditor this way:

public class CustomTableCellEditor extends AbstractCellEditor implements TableCellEditor

You won't need to fire events by yourself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文