为什么java.awt.Image不被视为java.awt.Component?

时间:2017-03-21 11:30:52

标签: java image swing inheritance compiler-errors

我试图在Component和Image之间切换Panel的内容, 它适用于组件:

imgpanel.removeAll();
Component comp;
if ((comp = player.getVisualComponent()) != null) {
    imgpanel.add(comp);
}

不适合图片:

btoi = new BufferToImage((VideoFormat) buf.getFormat());
img = btoi.createImage(buf);
imgpanel.removeAll();
imgpanel.add(img);//The method add(Component) in the type Container is not applicable for the arguments (Image)

我该怎么办?

1 个答案:

答案 0 :(得分:3)

  

为什么java.awt.Image不被视为java.awt.Component

Image扩展Object。即。

  • Object
    • Image

Component也扩展了Object。即。

  • Object
    • Component

由于Component不延伸ImageImage延伸Component,因此之间的关系。 OTOH只与Object关系。 I.E. Image Object& Component Object

  

我该怎么办?

Component中显示图像,用于显示图像,例如(ImageIcon in)JLabel。所以它可能看起来像这样:

panel.add( new JLabel( new ImageIcon(image) ) );

有关此概念的详细信息,请参阅“接口和继承”中的Inheritance。教程的一部分。