我正在为应用程序编写一些UI持久性方法。我正在尝试扩展到表模型中具有固定N组列的JXTable。

如何获取和设置JXTable中的#k列的以下信息,其中k是表模型顺序中的列号?这听起来并不容易,或者至少我缺少一些棘手的信息。


列宽
列可见性
列顺序


TableColumnModelExt.getColumns()包含了这个疯狂的笔记,我在解析时遇到了麻烦:


  java.util.List<javax.swing.table.TableColumn> getColumns(boolean includeHidden)
  
  返回包含的TableColumns的列表。包含或排除不可见列,分别取决于includeHidden是true还是false。如果为false,则List上的Iterator等效于getColumns()返回的Enumeration。
  
  注意:列表中列的顺序取决于是否包含不可见列,在前一种情况下,它是插入顺序,在后一种情况下,是可见列的当前顺序。


此外,我知道如何使用JTable.convertColumnIndexToView(),但是对于隐藏的列,它返回-1,并且不保留有关如果重新使该隐藏的列可见的顺序的信息。 JXTable知道此信息,因为您可以恢复列的可见性,并将其放置在隐藏之前的位置。

最佳答案

如果我对您的理解正确,那么您将在视图列索引之后找到一个隐藏的列(如果再次使其可见)。不直接支持。

为了保存/恢复,在AppFramework的上下文中有一个class XProperties(未得到正式支持,但可以正常工作),它可能使您知道如何执行此操作。

编辑

要通过modelIndex获取TableColumn,请获取所有列,循环并比较modelIndex。伪方法getColumnFor(modelIndex)中的一些伪代码:

List allColumns = table.getColumns(true);
forEach {
   if (column.getModelIndex() == modelIndex) {
        return column;
   }
return null;

10-08 09:20