0

必要な入力の種類に基づいて、GUI の入力を動的に構築しています。たとえば、次のようになります。

と が必要な場合doublebooleanGUI が作成するコンポーネントのタイプはJTextFieldJRadioButtonです。

各タイプの入力メソッドを静的に次のようにしたいものを定義します。

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 に関する情報について何も知らないことを意図した別のオブジェクトに渡されることを意図しています。

4

2 に答える 2

0

作成する必要がある JComponent タイプごとにハンドラーを作成し、JComponent 自体の代わりにそれを登録することができます。各ハンドラには、getValueJComponent の適切なメソッドを呼び出すメソッドがあります。

于 2013-05-06T13:32:46.623 に答える