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
相关产品推荐
相关产品推荐

