java – super.paintComponent(g)的问题
发布时间:2020-12-15 04:54:52 所属栏目:Java 来源:网络整理
导读:这是片段: protected void paintComponent(final Graphics g) { Runnable r=new Runnable() { @Override public void run() { while(true) { super.paintComponent(g); // ----- line of error g.setColor(Color.red); g.drawOval(x,y,width,height); g.fil
|
这是片段:
protected void paintComponent(final Graphics g) {
Runnable r=new Runnable() {
@Override
public void run() {
while(true) {
super.paintComponent(g); // <----- line of error
g.setColor(Color.red);
g.drawOval(x,y,width,height);
g.fillOval(x,height);
x++;
y++;
width++;
height++;
if(width==20)
break;
try {
Thread.sleep(100);
} catch(Exception exc) {
System.out.println(exc);
}
}
}
};
Thread moveIt=new Thread(r);
moveIt.start();
}
编译完整代码时会产生以下错误: d:UnderTest>javac mainClass.java
mainClass.java:18: cannot find symbol
super.paintComponent(g);
^
symbol: method paintComponent(Graphics)
location: class Object
1 error
为什么我会收到此错误? 如果这是我的完整代码: import java.awt.*;
import javax.swing.*;
import java.lang.Thread;
class movingObjects extends JPanel {
int x=2,y=2,width=10,height=10;
@Override
protected void paintComponent(final Graphics g) {
Runnable r=new Runnable() {
@Override
public void run() {
while(true) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawOval(x,height);
x++;
y++;
width++;
height++;
if(width==20)
break;
try {
Thread.sleep(100);
} catch(Exception exc) {
System.out.println(exc);
}
}
}
};
Thread moveIt=new Thread(r);
moveIt.start();
}
}
class mainClass {
mainClass() {
buildGUI();
}
public void buildGUI() {
JFrame fr=new JFrame("Moving Objects");
movingObjects mO=new movingObjects();
fr.add(mO);
fr.setVisible(true);
fr.setSize(400,400);
fr.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new mainClass();
}
}
解决方法
你应该使用合格的超级.
movingObjects.super.paintComponent(g); 因为,当你在内部类中使用this或super时(在这种情况下:Runnable),你将获得内部类.如果要使用内部类的外部类,请使用Qualified This或Qualified Super. YourOuterClassName.this YourOuterClassName.super 合格的超级是我在JLS中找不到的术语,我自己发明了它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
