java - 无法编辑看似任意的 JTable 列

标签 java swing editor jtable

正如标题所述,我有一个 JTable 并且无法编辑“任意”列。我有 4 列,只有第一列是可编辑的。第一列有文件和一个特殊编辑器,接下来的两列有字符串,最后一列有整数。我使用的是自定义模型,并且从 isCellEditable 方法返回 true。当然,我首先查阅了几个网站寻求帮助,但我找不到任何有帮助的东西。我使用java源代码重写了几个JTable方法并插入打印语句。特别是,我发现 table.editCellAt(row, col) 总是返回 false,因为从单元格编辑器返回的编辑组件始终为 null。因此,我很自然地尝试使用 table.setDefaultEditor(String.class, new MyEditor()) 替换编辑器。奇怪的是,这不起作用。 String 列的所有编辑器仍然是 JTable 默认使用的 GenericEditor。然后,我尝试通过执行以下操作将编辑器添加到每列:

TableColumnModel model = table.getColumnModel();
for(int i = 1; i < model.getColumnCount(); i++){
    model.getColumn(i).setCellEditor(new MyEditor());
}

请注意,i 从 1 开始,因为第一列已经有合适的编辑器。我现在没有主意,所以我向 Stack Overflow 的优秀人士寻求帮助。

编辑:我使用的是 DefaultTableModel,我只是覆盖了 isCellEditable 以确保它始终返回 true (即使 DefaultTableModel 应该默认这样做)。我这样做是为了减少无用的、浪费的调试响应的数量。此外,一列可编辑但其他列不可编辑这一事实似乎表明问题出在其他地方。

编辑:问题似乎与列创建有关。一位教授建议更改 setAutoCreateColumnsFromModel,它似乎已经解决了问题。

最佳答案

只需要 5 行“自定义代码”即可测试 JTable 的使用。其余代码是您将来可能创建的任何 SSCCE 的模板。

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class SSCCE extends JPanel
{
    public SSCCE()
    {
        DefaultTableModel model = new DefaultTableModel(5, 3);
        JTable table = new JTable( model );
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scrollPane = new JScrollPane( table );
        add( scrollPane );
    }

    private static void createAndShowUI()
    {
        JFrame frame = new JFrame("Basic SSCCE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add( new SSCCE() );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

关于java - 无法编辑看似任意的 JTable 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630972/

相关文章:

java - 将 UTC 时间从 MySQL 转换为本地时区

editor - Gvim 折叠系统 verilog 关键字对

带有 MAC 开始和结束标记高亮显示的 HTML 编辑器

Java 聊天应用程序 - 多种字体、插入表情符号和表格的问题

java - 使用 quaqua LAF 在 Swing Mac OSX 应用程序上获取未保存的点

java - Java 是否可以像 C# 一样进行表单设计?

Vim - 拉入搜索寄存器

java - 为什么我不能使用类的实现作为参数来覆盖方法

java - 如何在 Java 中写入和读取 .properties 文件时使用条件语句

java - 向我的 HashMap 添加键值对时遇到困难