当前位置: 首页 > 面试题库 >

JTable编辑/取消编辑代码不适用于重新排列的JTable列

蒋健
2023-03-14
问题内容

我正在为我的JTable列使用以下代码进行编辑/取消编辑,但是当用户重新排列列时,以下代码不起作用,代码的SSCCE如下:

    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;

    public class Main {
    public static void main(String[] argv) throws Exception {
    TableModel model = new DefaultTableModel() {
    public boolean isCellEditable(int rowIndex, int mColIndex) {
    boolean flag = false;
            if (isEdit == true) {    
                if ((vColIndex == tblItem.getColumn("Design").getModelIndex())
                        || (vColIndex == tblItem.getColumn("ChangedCategory").getModelIndex())
                        || (vColIndex == tblItem.getColumn("Amount").getModelIndex())) {
                    flag = false;
                } else {
                    flag = true;
                }
            } else {
                flag = false;
            }    
            return flag;
  }
};

JTable table2 = new JTable(model);
}
}

问题答案:

请注意,模型索引和视图索引
相等。如前所述这里,

JTable提供了从模型坐标转换为视图坐标-
convertColumnIndexToViewconvertRowIndexToView-的方法,以及从视图坐标转换为模型坐标-
convertColumnIndexToModel和的方法convertRowIndexToModel

本教程部分讨论了

行进行
排序和过滤
,但是原理也适用于列。没有完整的示例,很难确定。



 类似资料:
  • 问题内容: 有没有什么好书或网站可以帮助您创建一个?我想使一栏可编辑。我想实际上将继承的组件(在这里创建的组件)放到表列之一中,而不是仅仅基于它是可编辑的字段来放置表。 我有《JFC Swing教程第二版》 一书,但我只是想知道是否还有其他例子可以研究,并学习如何更好地处理表格。这本书似乎只是将Java的“ trail”在线上并放在书中。 我正在重新阅读这些东西,只是好奇是否有人发现了一些可以帮助

  • 我试图创建一个“简单”的JTable,它使用一个TableModel来扩展AbstractTableModel绑定到一个ArrayList。我的目标是保留允许单元格编辑、行排序和列重排的所有内置JTable功能。我在这里提供的示例完成了所有这些...但是...在一定的操作序列下,当编辑单元格然后通过拖动列标题重新排列表列时,或者使用列标题按钮排序表时,最近编辑的单元格的内容被复制到表行的两列中。

  • 问题内容: 我试图以编程方式开始在按键上编辑当前行的第三列。 我实现了一个KeyListener,其中包含以下代码 当我释放Enter时,单元格确实是可编辑的(我可以在末尾键入),但是没有插入符号。 当我用鼠标单击时,行为是预期的(我可以进行编辑,并且存在carret)。 另外,我注意到在释放键时,我的celleditor为null,而在mouseclick上,它也不为null。 我究竟做错了什么

  • 问题内容: 创建JTable组件时,默认情况下启用单元格编辑。如何防止用户编辑JTable的内容? 问题答案: JTable使用AbstractTableModel对象。这就是您传递给JTable的构造函数的东西。您可以如下编写自己的AbstractTableModel 然后将您的JTable初始化为

  • 我在stackoverflow上看到过类似的问题,但无论如何,我无法用这些答案解决我的问题。 我想做的是: 单击JTable中的double on单元格(由于IsCelledTable方法,该单元格可以编辑) 在自定义表中保存单元格的新值以打印此新值 更新我的数据库(SQlite)中的数据 这是我的自定义表模型 . 这是我打印JTable的JPanel: