データ入力に arrayList を使用する JTable を作成しています。arrayList に 2 セットのデータがあります。1 つはあるタイプのテーブル用で、もう 1 つは別のタイプのテーブル用です。
私が望んでいるのは、abstractTableModel で getValueAt メソッドをオーバーロードして、必要なデータ セットへの引数を受け取るようにすることです。
これは可能ですか、それとも別の方法で考えるべきですか?
データ入力に arrayList を使用する JTable を作成しています。arrayList に 2 セットのデータがあります。1 つはあるタイプのテーブル用で、もう 1 つは別のタイプのテーブル用です。
私が望んでいるのは、abstractTableModel で getValueAt メソッドをオーバーロードして、必要なデータ セットへの引数を受け取るようにすることです。
これは可能ですか、それとも別の方法で考えるべきですか?
メソッドのオーバーロードを止める人は誰もいません。JTable
コードが新しいメソッドを呼び出さないだけです。public Object getValueAt(int rowIndex, int columnIndex)
ビジネスロジックに基づいて、通常を上書きし、その中から他のメソッドを呼び出す必要があります。
受け入れられた答えに問題はありませんがTableModel
、与えられたものへの参照を最初のものと共有する2番目のものも考慮してくださいList
。を呼び出すJTable
だけで、いずれかのモデルを表示できますsetModel()
。
この例でEnvDataModel
は、 を介してそのデータを取得しますSystem.getenv()
。APropDataModel
は、 を介してそのデータを取得する場合がありますSystem.getProperties()
。どちらも へのアクセスを共有しますSystem
。
TableModel first = new EnvDataModel();
TableModel second = new PropDataModel();
JTable table = new JTable(fisrt);
...
table.setModel(second);
そうすることもできますが、問題は、Swing コンポーネントで現在このメソッドを呼び出している人は誰でも、オーバーロードされたメソッドを呼び出さないことです:)
あまり役に立ちません。
私の見解では、特定のデータを 2 つの異なるテーブル タイプで表示する必要があるため、基本的に 2 つのオプションがあります。
ただし、1番目の方法は、私の観点から推奨される方法です。