私は現在Java GUIアプリケーションを構築しており、少なくとも私のように比較的経験の浅い人にとっては、かなりの思考が必要と思われるものを実装しようとしています。
状況
Customer
ジョブのコレクションを保持するドメイン レベルのクラスがあり、これもクラスです ( Job
)。このアプリケーションは、顧客と顧客のために行う仕事を管理したい架空の園芸会社を対象としています。
GUI レベルでは、すべての顧客用の jList があり、拡張されたカスタム リストモデルがありますAbstractListModel
。私のアプリケーションのこの部分は完全に機能し、顧客を簡単に追加/編集/削除できます。
目標
ここで、 jList で選択された顧客の求人を表示するjTableを実装します。
間違いなく custom が必要TableModel
です。問題は、どこからデータを取得するかです。Customer
クラス内のジョブのコレクションは でArrayList
あり、クラスにはこの ArrayListを直接返すメソッドがないことに注意してください。コレクションを変更できるようにしたくないので、コピーを取得することしかできません。パブリックコンテキストから直接クラスで。
私の考え
パラメータを使用して、テーブルモデルに内部コレクションを変更するメソッドを持たせることcustomer
です。インデックスがjList
変更された場合は、そのメソッドを呼び出して、jTableJob
が顧客のために行われた s を表すようにする必要があります。ジョブを編集/作成/削除する必要がある場合、変更は常にテーブルモデルで最初に行われ、オブジェクトに変更が反映されcustomer
ます(新しいジョブまたはジョブの削除の場合)。
質問
それはそれを実装する良い方法ですか?テーブルモデルを介してまたはに直接変更を加えるのを忘れると、矛盾とトラブルが発生するため、そうではないと思います。より良い方法はありますか?他のものを変更する必要がある場合は、気にしません。Job
Customer
Job
(オプション) 小さなサブ質問
Collection
Javaのさまざまな s に関する知識が不足しています。私は通常ArrayList
、この場合Customer
の (変更可能な) ジョブのように、 を使用します。これより良いコレクションはありますか?