Java 获取未知组件的值

Java 获取未知组件的值,java,swing,oop,instanceof,Java,Swing,Oop,Instanceof,我正在根据需要的输入类型动态构建GUI的输入,例如: 如果我需要一个double和boolean,那么GUI创建的组件类型是JTextField和JRadioButton 我定义了我希望每种类型的输入方法是静态的,如下所示: private static Map<InputType, Class<? extends Component>> typeComponentMap = new HashMap<InputType, Class<? extends Com

我正在根据需要的输入类型动态构建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);
}
现在在
java.awt.Component
中没有像getValue这样的方法,所以我只能看到一个选项,即使用
instanceof
检查子类,然后从那里开始。。。但我希望有更好的办法


创建的流将被传递给另一个对象,该对象不知道有关GUI的信息是如何传输的。

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

您可以为实现该接口的每个JComponent类型创建一个处理程序您需要创建并注册它,而不是JComponent本身。每个处理程序都有一个
getValue
方法,该方法将调用它的JComponent上的相应方法。

double
和一个
boolean
,然后GUI创建的组件类型是
JTextField
JRadioButton
”为什么不
JSpinner
JCheckBox
?如果需要,它可以是那些类型,只需要更改映射中的类即可。我只是将这些类型用于测试目的。
public static void writeComponentValue(ObjectOutputStream stream, InputType type, Component component)