gpt4 book ai didi

java - 如何隐藏/删除 SWT 表中的列

转载 作者:太空狗 更新时间:2023-10-29 22:53:06 26 4
gpt4 key购买 nike

在 SWT(特别是在 Eclipse 插件中)中使用哪种方法能够隐藏/删除表中的列?

  1. A 无法将此功能转移到行,因为我需要同时插入和隐藏(或删除)行和列。
  2. 我尝试使用 TableColumn.dispose() 删除它们,但布局中的 ColumnWeightData 没有被删除,并且使用新的 TableLayout 重置整个表格布局并没有从布局中删除有关列的信息。
  3. 我尝试创建所有需要的列,并使用 setWidth(0) 隐藏那些应该隐藏/删除的列。我写的示例代码是here .这种方法不好:3.1.它不缩放。在我的例子中,最大列数可能是几千,而用户真正需要的只有少数。3.2.处理调整大小真的很麻烦。 AFAIU,即使在 setResizable(false) 之后,如果调整了父组件的大小,列的大小也可能会调整。为了处理它,我需要为父组件编写大量的监听器。我还没试过。

我也应该

  1. 进一步调查处理表列并使用它?
  2. 使用 setWidth(0) 一段时间,因为我还没有遇到缩放问题?
  3. 寻找一些第三方表格组件(Nattable...)的方向? - 如果是,最好是开源的,因为我的 Eclipse 插件是开源的。

最佳答案

我们在这里的许多 table 上都这样做。

首先,我们确保用户看不到我们在做什么。

table.setRedraw( false );

然后我们删除所有列。

while ( table.getColumnCount() > 0 ) {
table.getColumns()[ 0 ].dispose();
}

然后我们添加需要的。

ArrayList<Column> columns = getShownColumns();

for ( Column column : columns ) {
TableColumn tableColumn = new TableColumn( table, column.getStyle() );
tableColumn.setText( column.getTitle() );
tableColumn.setWidth( column.getWidth() );
}

最后我们让用户看到我们做了什么。

table.setRedraw( true );

关于java - 如何隐藏/删除 SWT 表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com