2 つのウィジェットを持つアプリケーションを設計しています。
-任意のオブジェクトを含むリスト
-現在選択されているオブジェクトの特定のプロパティを表示するテーブル
目標は、リストからオブジェクトを選択し、プロパティを見て、必要に応じて変更できるようにすることです。リストには、さまざまなタイプのオブジェクトを保持できます。
リストにVehicle
オブジェクトとPerson
オブジェクトが含まれているとします
public class Person
{
public String name;
public Integer age;
}
public class Vehicle
{
public String make;
public String model;
}
オブジェクトをクリックするPerson
と、テーブルに名前と年齢が表示され、それらに新しい値を割り当てることができます。同様に、Vehicle
オブジェクトをクリックすると、表にメーカーとモデルが表示され、それらを変更できます。
私は次のようなメソッドを書くことを検討しました
public String[] getFields()
{
return new String[] {"name", "age"};
}
見たいインスタンス変数を表す文字列のリストを返し、いくつかのリフレクションメソッドを使用してそれらを取得/設定します。getFields
リストにスローされる可能性のある任意のオブジェクトをテーブルを使用して処理できるように、すべてのクラスでこのメソッドを定義できます。
しかし、リフレクションに頼らないようにこれを設計する方法はありますか? 現在のアプローチは悪い設計のようです。
一方、TableModel
可能なクラスごとに 1 つずつ、複数のオブジェクトを作成することもできます。テーブルは、表示する行とオブジェクトのインスタンス変数へのアクセス方法を認識します。しかし、新しいクラスが追加されるたびに、新しいテーブル モデルを定義する必要がありますが、これも弱い設計のように思えます。