是否可以控制某个列是否应该在列控件弹出菜单中可用?我知道切换(使用 CheckBoxList 禁用/启用)并使列变灰。但我不想在弹出菜单中输入列,因为该列是 Jtable 中的必备列。我正在使用 JXTable。任何人有任何提示吗?
最佳答案
TableColumnExt 有一个 hideable 属性,可以有效地禁用隐藏。它仍然显示在弹出窗口中,您可以切换复选框(that's a bug, just filed - 菜单项应该被禁用;),但至少该列没有隐藏。要解决该错误,您可以实现一个不添加复选框的自定义列控件(正如 Robin 正确建议的那样),例如:
JXTable table = new JXTable(new AncientSwingTeam());
// here the hideable property is configured manually,
// in production code you'll probably have a custom ColumnFactory
// doing it based on some data state
table.getColumnExt(0).setHideable(false);
ColumnControlButton columnControl = new ColumnControlButton(table) {
@Override
protected ColumnVisibilityAction createColumnVisibilityAction(
TableColumn column) {
if (column instanceof TableColumnExt
&& !((TableColumnExt) column).isHideable())
return null;
return super.createColumnVisibilityAction(column);
}
};
table.setColumnControl(columnControl);
table.setColumnControlVisible(true);
至于不包括菜单项:在引入可隐藏属性时,我们决定使用keeping the item in the list but disable it。因为用户可能会因为没有看到控件中的所有列而感到困惑。因此,一旦错误将被修复(刚刚完成,从修订 #4315 开始提交),我建议再次删除自定义列控件。不过,只是我的 2 欧分 :-)
关于java - 从列控件弹出菜单中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18827754/