Java では、DefaultTableModel を使用して動的に列を JTable に追加しています。
//create DefaultTableModel with columns and no rows
DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
JTable table = new JTable(tableModel);
columnNames 変数は、列名の文字列配列です。したがって、プログラムが起動して実行された後、ユーザーは追加の列を追加するオプションを利用できます。私は次のようにします
tableModel.addColumn("New column name");
これにより、必要に応じて列がテーブルに動的に追加されます。ユーザーは、追加された列を削除することもできます。このために、次のコードを使用します。
TableColumn tcol = table.getColumnModel().getColumn(0);
table.getColumnModel().removeColumn(tcol);
指定されたインデックスの列を削除する必要があります。私も試しました:
table.removeColumn(sheet.getColumn(assessmentName));
どちらも(視覚的に)機能しますが、ここに問題があります。追加された列を削除した後、別の列が追加されてテーブルが更新されると、以前に削除された列が再び表示されます。したがって、列を視覚的に削除している間、最後の 2 つのコード スニペットのどちらも、実際にはモデルから列を削除していません。ここで、列がモデルに追加されたので、列を削除する必要があると仮定していますか? 呼び出す必要がある特定のメソッドや、列を削除するために実装する必要があるロジックはありますか?