-3

我尝试运行以下源但得到

类型不匹配:无法从 CustomJPan 转换为 JPanel

错误。有人可以帮忙吗?请原谅消息来源,我是从头顶上做的。

public class rebuiltgui extends JApplet {

  public void init() {

    JPanel jpan = new CustomJPan();     
  }
}

class CustomJPan  {

  public JPanel CustomJPan()  {

    thispan = new JPanel();
    thispan.setBackground( Color.red );
    return thispan;
  }

  public changeColour() {

    // Change colour to blue here
  }
}
4

2 回答 2

2

由于 CustomJPan 没有扩展任何内容,因此您的代码不会进行直接子类化。相反,您似乎有一个与类 CustomJPan 同名的“伪”构造函数尝试返回某些内容,并且您当然知道构造函数被声明为不返回任何内容。

如果要子类化,则必须扩展另一个类。

IE,

public class CustomJPan extends JPanel {

   // a real constructor has no return type!
   public CustomJPan() {
       // ....         
   }

  // ... etc
}

任何介绍性的 Java 教科书都很好地介绍了子类化,您最好阅读有关这方面的章节。

一个警告:除非您有明确的需要,例如希望更改类的固有行为,尤其是当您希望覆盖方法时,否则您将希望避免子类化。

于 2013-02-23T04:29:15.900 回答
2

尝试类似的东西

public class rebuiltgui extends JApplet {

  public void init() {

    JPanel jpan = new CustomJPan();     
  }
}

class CustomJPan extends  JPanel {

  public CustomJPan()  {
      super();
      setBackground( Color.red );
  }

  public void changeColour() {

    // Change colour to blue here
  }
}

我已更改为扩展 jpanel

于 2013-02-23T04:35:59.627 回答