You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JVx RemoteDataBook如何实现仅指定3列可编辑,其余列只读

问题

我的界面中有一个标准的RemoteDataBook,包含30列,仅需将其中3列设置为可编辑状态。我知道可以通过以下代码将UITable设为只读:

table.setEditable(false);

但设置后所有列都会变成只读,请问如何让这3列恢复可编辑?我在文档中找到如下代码片段:

rdbContacts.getRowDefinition().getColumnDefinition("FILENAME").setReadOnly(true);

但30列逐个设置太繁琐,有没有类似setEditable(true)的便捷方法?

解决方案

先通过table.setEditable(false)将所有列统一设为只读,之后仅针对需要可编辑的3列,将它们的readOnly属性设为false——这种方式比逐个设置27列只读要高效得多,代码示例如下:

// 全局设置所有列为只读
table.setEditable(false);

// 获取表格的行定义
RowDefinition rowDef = rdbContacts.getRowDefinition();

// 为需要可编辑的列取消只读状态
rowDef.getColumnDefinition("需要编辑的列名1").setReadOnly(false);
rowDef.getColumnDefinition("需要编辑的列名2").setReadOnly(false);
rowDef.getColumnDefinition("需要编辑的列名3").setReadOnly(false);

如果这3列的列名有规律,或者你想更灵活地维护可编辑列列表,可以通过遍历列定义批量处理:

table.setEditable(false);
RowDefinition rowDef = rdbContacts.getRowDefinition();

// 定义需要可编辑的列名集合
Set<String> editableColumnNames = new HashSet<>(Arrays.asList("列名1", "列名2", "列名3"));

// 遍历所有列,匹配到目标列就取消只读
for (ColumnDefinition colDef : rowDef.getColumnDefinitions()) {
    if (editableColumnNames.contains(colDef.getName())) {
        colDef.setReadOnly(false);
    }
}

这种方法只需要维护一个可编辑列名的集合,无论总列数多少,代码量都不会增加,操作更高效。

内容的提问来源于stack exchange,提问作者we42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:47:25