必要な入力の種類に基づいて、GUI の入力を動的に構築しています。たとえば、次のようになります。
と が必要な場合double、booleanGUI が作成するコンポーネントのタイプは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 に関する情報について何も知らないことを意図した別のオブジェクトに渡されることを意図しています。