私はJTableを拡張するカスタムテーブルクラスを持っています。チェックボックスに基づいて列を表示/非表示にしたい。私はアクションの列の最大、最小、および優先幅を変更するチェックボックスにactionlistenerを持っています。JTable:外部入力に基づいて列を変更する
チェックボックスが選択されていない場合は、最小/最大/優先幅を0に設定します。これを選択すると、最小/最大/優先幅を通常のサイズに設定します。
私の問題は、チェックボックスをオンにしてもテーブルが変わらないことです。私は列を見ません。ただし、アプリケーションまたはテーブルの列のサイズを変更すると、テーブルが更新され、新しい列が正しく表示されます。
私は "table.repaint()"を呼び出そうとしましたが、何もしませんでした。私の理想的なアプローチは、更新を引き起こすアプリケーション/列のサイズ変更中に何が呼び出されているか把握し、それをリスナーから呼び出すことです。
投稿すると、あなたは何をしたのか理解できます – c0der
*表示*を変更するのではなく、*モデル*で変更を行うことを検討してください - それぞれのタイプに1つずつ2つのTableModelを作成し、それに応じてJTableモデル – copeg
'アプリケーションやテーブルの列のサイズを変更すると、テーブルが更新され、新しい列が正しく表示されるようになりました.'変更が行われたことをLayoutManagerに知らせる必要があります。 'revalidate'を呼び出そうとしますが、上記の私のコメントの中の代替案を考慮に入れてください – copeg