java repaint 没有调用 paint函数

publicclassMainextendsJComponentimplementsRunnable{publicMain(){newThread(this).start... public class Main extends JComponent implements Runnable{

public Main(){
new Thread(this).start();
}
@Override
protected void paintComponent(Graphics arg0) {
super.paintComponent(arg0);
System.out.println("...");
}
public static void main(String[] args) {
new Main();
}
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
}
}
}

运行的时候并没有调用piant函数里的输出函数。 请问这是为什么。
展开
 我来答
198901245631
推荐于2018-05-07 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1738万
展开全部

不需要调用。

解释:repaint方法中在父类方法中实际上实现的功能就是paint方法,所以效果是等同,也就不需要再去重复调用paint方法。

林业9999
推荐于2016-02-29 · TA获得超过224个赞
知道小有建树答主
回答量:216
采纳率:100%
帮助的人:107万
展开全部
import java.awt.Frame;
import java.awt.Graphics;
public class Frames extends Frame implements Runnable
{
public Frames()
{
this.setSize(200, 200);
this.setVisible(true);
new Thread(this).start();
}

public void paint(Graphics g)
{
System.out.println("...");
}

public static void main(String[] args)
{
new Frames();
}
@Override
public void run()
{
while(true)
{
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}
}

这个,好像repaint方法只对Frame或者JFrame起作用吧??
追问
我继承的是JComponent 所以要add后才能实现   我自己已经弄明白了  可能是Frame所以不用add 不过还是谢谢你了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pangzhiming
2013-05-29 · TA获得超过374个赞
知道小有建树答主
回答量:787
采纳率:100%
帮助的人:347万
展开全部
你也没掉用ran()方法哦。
更多追问追答
追问
ran() 是什么函数  怎么调用   能用我这个代码解释下吗
追答
ran();是你写的啊。把main()加个ran();
public static void main(String[] args) {
new Main();
run();

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式