必要な入力の種類に基づいて、GUI の入力を動的に構築しています。たとえば、次のようになります。
と が必要な場合double
、boolean
GUI が作成するコンポーネントのタイプはJTextField
とJRadioButton
です。
各タイプの入力メソッドを静的に次のようにしたいものを定義します。
private static Map<InputType, Class<? extends Component>> typeComponentMap = new HashMap<InputType, Class<? extends Component>>();
static {
typeComponentMap.put(InputType.INTEGER, JTextField.class);
typeComponentMap.put(InputType.DOUBLE, JTextField.class);
typeComponentMap.put(InputType.BOOLEAN, JRadioButton.class);
typeComponentMap.put(InputType.STRING, JTextField.class);
}
コンポーネントの値をそれらのタイプのいずれかに(ストリームに)読み込もうとすると、問題に直面しています
私の方法は現在、次のようになっています。
public static void writeComponentValue(ObjectOutputStream stream, InputType type, Component component)
にgetValueのようなメソッドがないjava.awt.Component
ため、サブクラスを使用してチェックし、そこから移動するという1つのオプションしか表示されinstanceof
ません...しかし、もっと良い方法があることを望んでいましたか?
作成されたストリームは、GUI に関する情報について何も知らないことを意図した別のオブジェクトに渡されることを意図しています。