Frame owner = null;
 if (parent instanceof Frame)
 {
  owner = (Frame) parent;
 } else
 {
  owner = (Frame) SwingUtilities.getAncestorOfClass(Frame.class, parent);
 }

解决方案 »

  1.   

    判断parent 类是否属于Frame的子类,若是将它强转为Frame.......
      

  2.   

    instanceof 运算符是在运行期间测试一个对象有类型,运算符左边是一个对象的实例,而右边是一个类或接口的名字。
    如果左边的对象实例是属于右边的类或其子类的实例,或者是实现了接口类的实例则返回true。 
      

  3.   

     
    owner=(Frame) SwingUtilities.getAncestorOfClass(Frame.class, parent);不是的话,我估计他是要硬上了
    什么意思???
      

  4.   

    强制转型 ,因为owner定义成Frame,将后面的转型为Frame类型,
      

  5.   

    getAncestorOfClass(Frame.class, parent)
    这个过程是怎么找的呀?
      

  6.   

    SwingUtilities的一个方法静态方法吧
      

  7.   

    在组件层次结构中搜索上面的 comp 的便捷方法,返回它找到的类 c 的第一个对象。如果无法找到类 c,可以返回 null。 
    只是这句不太明白!
      

  8.   

    [/Quote]纠正下5楼的错误,这里不是"把owner也转成Frame类型(和parent同类型)",而是把"parent"强制转换成"Frame"类型!
      

  9.   

    instanceof  这个是JAVA特有的运算符。用来判断数据类型
      

  10.   

    理解反射机制,
    对象名不同,但对象的地址一样,
    Frame.Class,是frame对象
    parent,GUI中的一个组件,不明确!
    思考,如果你知道GUI中的一个组件的对象,但不知道是不是顶级的框架,那么你就可以用这个方法指定这个GUI的顶级;
    GUI中有没有包含Frame的框架呢?
    是没有的, 
      

  11.   

    instanceof   这个运算符 确实用的很少啊
      

  12.   

    The details of picture for the result you want as follows:
      

  13.   

    The details of picture for the result you want as follows: