質問

アプリケーションのためにいくつかのUI Persistenceメソッドを書いています。テーブルモデルにn列の固定セットを使用して、Jxtableに拡張しようとしています。

jxtableの列#kの次の情報を取得して設定するにはどうすればよいですか。ここで、kはテーブルモデルの順序で列番号ですか? 見た目ほど簡単ではありません。少なくとも、トリッキーな情報が欠けています。

  • 列幅
  • 列の可視性
  • 列の順序

TableColumnModelExt.getColumns() このクレイジーなメモが含まれています。

java.util.List<javax.swing.table.TableColumn> getColumns(boolean includeHidden)

含まれるテーブルコラムのリストを返します。 IncludedDiddenがそれぞれTrueまたはFalseであるかどうかに応じて、目に見えない列を含むまたは除外します。 falseの場合、リスト上のイテレーターは、getColumns()によって返される列挙に相当します。

注:リスト内の列の順序は、目に見えない列が含まれているかどうかによって異なります。前者の場合、それは後者の挿入順序であり、目に見える列の現在の順序です。

また、私は使用方法を知っています JTable.convertColumnIndexToView(), 、しかし、それは非表示の列の場合-1を返し、非表示の列が再び見える場合、どの順序が移動するかについての情報を残しません。 jxtableは、列の可視性を復元できるため、この情報を知っています。列が隠されていた前に列を置きます。

役に立ちましたか?

解決

私があなたを正しく理解している場合、あなたは再び見える場合、表示された列のインデックスの後に隠された列があります。それは直接サポートされていません。

保存/復元のために、aがあります クラスXProperties (公式にはサポートされていませんが、スムーズに作業しています)AppFrameworkのコンテキストでそうすることで、それを行う方法をアイデアが得るかもしれません。

編集

ModelIndexでTablecolumnを取得するには、すべての列を取得し、ループしてModelIndexを比較します。擬似法のいくつかの擬似コードgetColumnfor(modelindex):

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

他のヒント

を使用することを検討してください スイングアプリケーションフレームワーク (JSR-296)

このプロジェクトは現在、AFAIKが死んでいますが、この機能をゼロから実装するよりも優れた出発点だと思います。 (それはオープンソースです。)

NetBeansプラットフォームの上にアプリケーションを構築している場合(これを強くお勧めします)、これら2つのフレームワークを一緒に使用する方法に関する私のブログをご覧ください。

http://puces-blog.blogspot.com/2009/04/netbeans-platform-meets-swing.html

注:あります より良いスイングアプリケーションフレームワーク

The Better Swing Application Framework is a fork of the original Swing Application Framework (appframework) reference implementation of JSR 296. Since August 2009, the original Swing Application Framework project has been on hold, and therefore this fork was created to carry on the work until the original project resumes. 

私はこれについてあまり知りませんが、それはさらに良い出発点かもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top