具体代码如下:
Image bg = new ImageIcon("images/background.jpg").getImage();
// 如果能完全使用继承,那么这个匿名内部类是增加了新的构造方法和属性,用新的构造方法去构造,实际上却不可以!
JPanel backPanel = new JPanel(bg) { // 用新的构造方法去构造
Image bg = null; // 新增的属性
JPanel(Image bg) { // 新增的构造方法
super();
this.bg = bg;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int x = this.getParent().getWidth();
int y = this.getParent().getHeight();
setSize(x, y);
g.drawImage(bg, 0, 0, x, y, null);
super.paintComponent(g);
}
};
这到底是为什么?难道是我用它的父类来引用它,而父类中没有新的构造方法所以不能使用?
------解决方案--------------------
因为他是匿名的,而构造方法要以类名为方法名,所以你无法写一个合乎标准的构造函数
比如你那个JPanel的例子,你写一个叫JPanel的方法可以,但它不能作为构造方法,因为这个类没有名字