【问题标题】:How to get an object of a class lower in a class hierarchy如何获取类层次结构中较低的类对象
【发布时间】:2014-04-05 06:17:40
【问题描述】:

我正在尝试通过使用getComponentAt() 方法使用点对象(移动)从GridLayout 获取JButton。通过使用 gridlayout 的框架,我可以进行以下调用:

JButton button2 = frame.getComponentAt(move);

问题是这两种类型不兼容。 button2 是一个 JButton,但 frame.getComponentAt(move) 是一个组件。尝试编译时收到以下错误消息。

incompatible types
found   : java.awt.Component
required: javax.swing.JButton

我知道这两个来自同一个类层次结构,但是,JButton 要低得多。 http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html http://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html

如何从组件中取出 JButton 以便指定此按钮?

【问题讨论】:

    标签: java swing jframe


    【解决方案1】:

    您应该将您的组件转换为 JButton :

    JButton button2 = (JButton) frame.getComponentAt(move);
    

    【讨论】:

      【解决方案2】:

      你应该首先检查这个Component是否真的是一个JButton,然后把它转换成一个JButton,如果是:

      Component c = frame.getComponentAt(move);
      if (c instanceof JButton) {
          JButton button2 = (JButton) c; // component is a JButton
      } else {
          ...  // component is not a JButton
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-26
        • 1970-01-01
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多