【问题标题】:Setting Cell Editable Property to a JTable row on the fly即时将单元格可编辑属性设置为 JTable 行
【发布时间】:2012-10-27 06:46:15
【问题描述】:

我有一个表说Table-C,它通过从Table-ATable-B. 拖动来获取行数据如果该行从Table-A 拖动到Table-C,那么该行是不可编辑的,它应该是指定的颜色。如果将一行从Table-B 拖到Table-C,则该行只有一些指定的列可编辑,并且该行以另一种颜色显示。我无法为Table-C 中的某些指定行设置isCellEditable,因为我无法控制用户在Table-C. 上删除行的位置我的第一部分任务是我应该能够拖动我能够成功完成的数据.但我的第二部分是我必须根据它来自的表动态地将isCellEditable 属性和color 赋予这些行。这是我被卡住的部分。任何想法将不胜感激。

【问题讨论】:

    标签: java swing drag-and-drop jtable


    【解决方案1】:

    你需要在行数据中提供一个标记,表格模型可以识别你不想编辑的行,这个标记也可以被渲染器使用。

    一种方法是将传入的行数据包装在一个包装器类中,因为它被放到表中,这样你就可以用你想要/需要的任何信息来为包装器播种

    【讨论】:

    • +1 .. 好吧,据我了解.. 这意味着在 isCellEditable 方法中我应该获取当前行的标记,然后基于标记我应该返回真或假。但是标记应该在什么位置.. 我可以插入另一列(表中未显示)用于存储标记吗?
    • 这取决于您的模型是如何设置的。如果每一行都由一个对象表示,您可以创建特殊的包装对象,该对象包含行对象并提供您想要的扩展功能。这意味着您需要使用 instanceof 来确定如何处理每一行。如果您使用数组,则可以包含超出可以用这些标记填充的列数的其他元素
    • 是的,我的是每行的单个对象..所以我创建了一个包含行对象和我的标记的包装器对象..?那是rt吗..
    • 是的。在您的模型中,您需要在获取值时使用 instanceof 来确定它是否是包装器对象(以及您的单元格渲染器)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2016-06-27
    相关资源
    最近更新 更多