1

データ入力に arrayList を使用する JTable を作成しています。arrayList に 2 セットのデータがあります。1 つはあるタイプのテーブル用で、もう 1 つは別のタイプのテーブル用です。

私が望んでいるのは、abstractTableModel で getValueAt メソッドをオーバーロードして、必要なデータ セットへの引数を受け取るようにすることです。

これは可能ですか、それとも別の方法で考えるべきですか?

4

3 に答える 3

2

メソッドのオーバーロードを止める人は誰もいません。JTableコードが新しいメソッドを呼び出さないだけです。public Object getValueAt(int rowIndex, int columnIndex)ビジネスロジックに基づいて、通常を上書きし、その中から他のメソッドを呼び出す必要があります。

于 2012-08-27T18:59:48.213 に答える
0

受け入れられた答えに問題はありませんが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);
于 2012-08-28T03:36:03.787 に答える
0

そうすることもできますが、問題は、Swing コンポーネントで現在このメソッドを呼び出している人は誰でも、オーバーロードされたメソッドを呼び出さないことです:)

あまり役に立ちません。

私の見解では、特定のデータを 2 つの異なるテーブル タイプで表示する必要があるため、基本的に 2 つのオプションがあります。

  • 2 つの異なるテーブル モデルを使用して、すべてのデータを分離しておくか
  • または、他のアプローチは、モデルに特定のフラグ (新しいフィールド) を付けて、それを使用するテーブルを示すことです。これは、セッターによって、またはどのタイプを使用するかがわかっている場合はコンストラクターで直接設定できます。

ただし、1番目の方法は、私の観点から推奨される方法です。

于 2012-08-27T19:04:36.653 に答える