2011-06-28 18 views
14

SWTのテーブルのカラムを非表示にする方法はありますか(特にEclipseプラグインの場合)?SWTテーブルのカラムを非表示/削除する方法

  1. Aは、行と列の両方を挿入および非表示(または削除)する必要があるため、この機能を行に転送できません。
  2. TableColumn.dispose()でそれらを削除しようとしましたが、レイアウトのColumnWeightDataが削除されず、新しいTableLayoutでテーブルレイアウト全体をリセットしても、レイアウトの列に関する情報は削除されませんでした。
  3. すべての必要な列を作成しようとしましたが、setWidth(0)で非表示/削除する必要がある列を非表示にしました。私が書いたサンプルコードはhereです。このアプローチは良くありません: 3.1。それは縮尺通りではありません。私の場合、列の最大数は数千で、ユーザーが実際に必要とする数はほんのわずかです。 3.2。サイズ変更を扱うことは本当に地獄です。親コンポーネントのサイズを変更すると、setResizable(false)カラムのサイズを変更した後でもAFAIUがサイズ変更されます。それに対処するには、親コンポーネントのための巨大なリスナーを作成する必要があります。私はまだ試していない。

だから私

  1. は、さらに、テーブルの列を配置調査し、それを使用する必要がありますか?
  2. スケーリングの問題にまだ遭遇していないので、しばらくの間setWidth(0)でスタックしますか?
  3. サードパーティのテーブルコンポーネント(Nattable ...)の方向を見ますか? - もしそうなら、私のEclipseプラグインはオープンソースなので、オープンソースが望ましい。

答えて

18

私たちはここのテーブルの多くでそれを行います。

まず、ユーザーは、我々がやっているものを見ていないことを確認してください。

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); 
+0

既に回答済みで閉鎖された質問にコメントするのは正しいのですか。 **しかし、私はレイアウトで何をすべきですか?**私にとって唯一のことは、厳密な数のColumnWeightDataまたはColumnPIxelDataを持つTableLayoutですが、書き込んだ列を削除した後は追加できません。 –

+0

私はあなたの質問を理解していません。あなた自身をより良く表現できますか? –

+0

申し訳ありませんが、私はまだ別の夕食を過ごしましたが、TableColumnLayoutクラスがあることがわかりました。それは私にとってうまくいった。実際に私が使用した他のテクノロジーについてはグーグルがやや簡単でした。 –

3

私だけ表示されている列と表の列を毎回再作成すると思います。 SWT.VIRTUALスタイルビットを使用すると、これはかなり高速です。 table.setRedraw(false)を設定し、テーブルからデータを削除し、すべてのTableColumnを破棄し、必要なデータを再作成してデータを再度設定します。次にtable.setRedraw(true)と設定します。これによりちらつきが最小限に抑えられます。

私はこれをすべて行いました。うまくいきました.TableColumnsの処分は、期待通りに機能しました。

SWT.VIRTUALを使用しても、かすかではありません。それはあなたの表の異なる取り扱いを暗示します。最初にそれを試して、それが十分に速いかどうかを調べるかもしれません。

列の何千ものテーブルを持つだけで、ユーザーにいくつかを示すには、私には非常に奇妙に聞こえます。ネイティブのTableの実装では、私はその問題を期待しています。

関連する問題