错误:“容器类型中的方法add(Component)不适用于参数(Square)

时间:2012-12-11 19:10:04

标签: java swing

我有上述问题 - 我想知道是否有专家可以提供帮助。

  1. 组件是我从java.awt API

  2. 导入的项目
  3. 我不知道Eclipse从哪里派生了“容器”!!

  4. 在我搜索的Qs中,它在“参数”之后所说的地方(Square),它在其他人的Qs中有一个数据类型 - 在我的搜索中,它是一个与一个人在同一个包中的类在下面,其中错误出现在第19行“choras.add(trial);”中,因此我假设该类被检测为类型。

  5. CODE:

    package square;
    
    import java.awt.Component;
    import javax.swing.JFrame;
    import javax.swing.JComponent;
    public class SquareTest 
    {
        public static void main(String[] args)
        {
            Square trial = new Square(12);
            {
                JFrame choras = new JFrame();
    
                choras.setSize(300, 430);
                choras.setTitle("Hi iko square yangu");
                choras.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
                choras.add(trial);
    
                choras.setVisible(true);
            }
        }
    }
    

4 个答案:

答案 0 :(得分:3)

  

类型Container中的方法add(Component)不适用于参数(Square)

javax.swing.JFrame扩展java.awt.Frame扩展java.awt.Window扩展java.awt.Container,因此,JFrameContainer的类型。

Container#add期望一个对象从java.awt.Component延伸。

据推测,Square不会从任何继承自(直接或间接)java.awt.Component的类扩展,但如果您没有向我们提供该类,我们只能猜测...

答案 1 :(得分:0)

该错误非常明显Jframe.add(Component)期望java.awt.Component作为参数,并且您将 Square 传递给它,因此错误。

答案 2 :(得分:0)

答案是你无法将一个Shape添加到JFrame中。 (您可以阅读有关容器here)的信息。

如果您希望在Swing中使用自定义形状,

This post可能对您有用。

答案 3 :(得分:0)

Square课程中,确保您正在扩展/实施某些内容:

public class Square extends JPanel