我尝试运行以下源代码但是
类型不匹配:无法从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
}
}
答案 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