获得未知组件的价值

时间:2013-05-06 02:41:37

标签: java swing oop instanceof

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

如果我需要doubleboolean,则GUI创建的组件类型为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)

现在java.awt.Component中没有类似 getValue 的方法,所以我只能看到一个选项,即使用instanceof检查子类并从那里开始。但是我希望有更好的方法吗?

创建的流旨在传递给另一个对象,该对象无法了解有关GUI信息的任何信息。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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