java - 编辑单元格时切换值

标签 java swing jtable editing

我有一个 JTable,它使用自定义 TableModel 来显示一系列对象实例。 getValueAt(int row, int column) 内部有一个 switch case,用于根据给定属性返回值(见下文)。一个 return 语句涉及将值 1/0 作为 true/false 返回。

有没有办法可以修改此 TableModel,以便在编辑单元格时显示 1/0?

public Object getValueAt(int row, int column) {
    User user = (User)dataVector.get(row);
    switch (column) {
        case ID_INDEX:
           return user.getId();
        case USERNAME_INDEX:
           return user.getUserName();
        case PASSWORD_INDEX:
            return "****";
        case ACTIVATED_INDEX:
            return (user.getActivated())?"true":"false";
        default:
           return new Object();
    }
}

最佳答案

default renderer and editor for Boolean是一个JCheckBox。考虑使用

case ACTIVATED_INDEX:
    return Boolean.valueOf(user.getActivated());

或者,

case ACTIVATED_INDEX:
    return (user.getActivated())?"1":"0";

附录:例如,DefaultTableModel不会覆盖 getColumnClass(),并且 AbstractTableModel 仅返回 Object.class。您的 TableModel 应相应地覆盖 getColumnClass():

DefaultTableModel dtm = new DefaultTableModel() {

    @Override
    public Class<?> getColumnClass(int col) {
        return getValueAt(0, col).getClass();
    }
};
// add some data
JTable table = new JTable(dtm);

关于java - 编辑单元格时切换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3305145/

相关文章:

java - 从数组打印时出现异常

java - 文档模式 JFileChooser?

java - table.getSelectedRow() 不起作用

java - 向 Documentfilter 添加退格键

java - 在别处单击时,JTable ComboBox 会丢失值

java - 如何以编程方式模拟复合背景上的按钮单击?

java - Jasper 报表创建 - 抑制和隐藏分页标题

java - 如何将下一行值更新为jtable中第一行的相同值?

Java jtable 允许行选择

java - Java 中的 URL 连接 (FTP) - 简单问题