【发布时间】:2013-05-06 02:41:36
【问题描述】:
我正在根据所需的输入类型动态构建我的 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);
}
当我试图将组件的值读回其中一种类型(到流中)时,我遇到了一个问题
我的方法目前看起来像这样:
public static void writeComponentValue(ObjectOutputStream stream, InputType type, Component component)
现在java.awt.Component 中没有像 getValue 这样的方法,所以我只能看到一个选项,即使用instanceof 检查子类并从那里开始......但我是希望有更好的方法吗?
创建的流旨在传递给另一个对象,该对象不知道有关 GUI 的任何信息。
【问题讨论】:
-
"
double和boolean那么 GUI 创建的组件类型是JTextField和JRadioButton" 为什么不是JSpinner& @ 987654334@? -
如果有必要可以是那些类型,它只需要改变地图中的类。我只是将这些类型用于测试目的。
标签: java swing oop instanceof