【问题标题】:Getting value of unknown component获取未知组件的值
【发布时间】:2013-05-06 02:41:36
【问题描述】:

我正在根据所需的输入类型动态构建我的 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 的任何信息。

【问题讨论】:

  • "doubleboolean 那么 GUI 创建的组件类型是 JTextFieldJRadioButton" 为什么不是 JSpinner & @ 987654334@?
  • 如果有必要可以是那些类型,它只需要改变地图中的类。我只是将这些类型用于测试目的。

标签: java swing oop instanceof


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多