在保持JPanel类型的同时设置配置

时间:2013-02-23 04:26:44

标签: java swing oop applet jpanel

我尝试运行以下源代码但是

  

类型不匹配:无法从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
  }
}

2 个答案:

答案 0 :(得分:2)

由于CustomJPan没有任何扩展,因此您的代码不会直接进行子类化。相反,你似乎有一个与类相同的“伪”构造函数,CustomJPan,试图返回一些东西,你当然知道构造函数被声明为什么都不返回。

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

即,

public class CustomJPan extends JPanel {

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

  // ... etc
}

任何介绍性的Java教科书都会详细介绍子类,你最好阅读这一章。

警告:除非你有明确的需要,例如希望改变类的固有行为,特别是当你想要覆盖方法时,你会想要避免子类化。

答案 1 :(得分: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