Java Swingx フレームワークを使用しています。オブジェクトに 4 つの列がありDefaultTableModel
ます。3 つの列のみを表示したい。しかし、計算には 4 つすべてが必要です。
実際のデータ モデル
S.No. | ID | GDC ID | Decsription
表に表示したいもの
S.No.| GDC ID | Decsription
レンダリングから 1 つの列のみを非表示または省略できますか? 私を案内してください。
Java Swingx フレームワークを使用しています。オブジェクトに 4 つの列がありDefaultTableModel
ます。3 つの列のみを表示したい。しかし、計算には 4 つすべてが必要です。
S.No. | ID | GDC ID | Decsription
S.No.| GDC ID | Decsription
レンダリングから 1 つの列のみを非表示または省略できますか? 私を案内してください。
モデルを調整したり、その列を非常に小さくしようとしたりする必要はありません。JTable
このための組み込み機能があります:removeColumn
メソッド。そのメソッドのjavadocに記載されているように
このJTableの列の配列からaColumnを削除します。注:このメソッドは、モデルからデータの列を削除しません。表示を担当していたTableColumnを削除するだけです。
また、次のメソッドの存在にも注意してください。
ビュー()の列の順序と列数はモデルの列の順序とJTable
は異なる可能性があるため、ビューとモデルを切り替えるにはこれらのメソッドが必要です。
デフォルトの最小サイズは10 pixels
幅です。
JTable ビューから列を削除/追加することができます。列は XxxTableModelに存在し、任意の列を非表示および表示できます。
幅を 0 に設定すると、非表示にすることができます。
_table.getColumn("ID").setPreferredWidth(0);
_table.getColumn("ID").setMinWidth(0);
_table.getColumn("ID").setWidth(0);
_table.getColumn("ID").setMaxWidth(0);
これを試して、単一の列を削除してください:
myTableModel = new DefaultTableModel();
myTableModel.setColumnIdentifiers(new Object[]{"S.No.", "ID", "GDC ID", "Decsription"});
JTable myTable = new JTable(myTableModel);
// remember to save the references
TableColumn myTableColumn0 = guiLoteryNumbersTable.getColumnModel().getColumn(0);
TableColumn myTableColumn1 = guiLoteryNumbersTable.getColumnModel().getColumn(1);
TableColumn myTableColumn2 = guiLoteryNumbersTable.getColumnModel().getColumn(2);
TableColumn myTableColumn3 = guiLoteryNumbersTable.getColumnModel().getColumn(3);
myTable.getColumnModel().removeColumn(myTableColumn1);
次に、順序を維持して列を再度表示します。
// 1- remove all the existent columns
myTable.getColumnModel().removeColumn(myTableColumn0);
myTable.getColumnModel().removeColumn(myTableColumn2);
myTable.getColumnModel().removeColumn(myTableColumn3);
// 2- add all the columns again in the right order
myTable.getColumnModel().addColumn(myTableColumn0);
myTable.getColumnModel().addColumn(myTableColumn1);
myTable.getColumnModel().addColumn(myTableColumn2);
myTable.getColumnModel().addColumn(myTableColumn3);
申し訳ありませんが、それが私が知っている最善の方法です。
これを実現するには、 getValueAt 、 getColumnCount を操作します。
たとえば、getColumnCount を 3 として指定します。
および on getValueAt - 列インデックスがスキップされた列の上にある場合にスキップする
JTable は最初に getColumnCount と getRowCount を呼び出し、セルごとに getValueAt を呼び出してフェッチします。
注: これは無視して、以下の Trashgod によるリンクを参照してください。