0

我正在根据需要的输入类型动态构建我的 GUI 输入,例如:

如果我需要 adouble和 aboolean那么 GUI 创建的组件类型是 aJTextField和 a 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 in这样的方法java.awt.Component,所以我只能看到一个选项,即使用instanceof并从那里检查子类......但我希望有更好的方法?

创建的流旨在传递给另一个对象,该对象旨在不知道有关 GUI 信息的任何信息。

4

2 回答 2

0

您可以为需要创建的每个 JComponent 类型创建一个处理程序,并注册它而不是 JComponent 本身。每个处理程序都有一个getValue方法,可以调用它的 JComponent 上的适当方法。

于 2013-05-06T13:32:46.623 回答
0

您可以实现一个需要 getInput 方法的接口,并为所有实现该接口的 JComponent 创建子类。

于 2013-05-06T02:53:23.207 回答