为什么如下的paint方法只执行了1次 ,不是应该执行20次的吗?

import java.awt.*;
import javax.swing.*;
public class ht extends JFrame
{
Wdmb mb=null;
public static void main(String[] args)
{
ht lx=new ht();

System.out.println("123");

}
public ht()
{
mb=new Wdmb();
this.add(mb);
this.setSize(400,300);
this.setLocation(300,280);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);

for(int i=0;i<20;i++){
this.repaint();
System.out.println("11111111111");
}
}
}
class Wdmb extends JPanel
{
public void paint(Graphics g)
{
int b = 0;
System.out.println(b);
b++;
}
}

慕姐4208626
浏览 222回答 2
2回答

波斯汪

你的这个repaint &nbsp;方法不刷新子view 的 视图;我给你贴出来 方法的内部实现 ;只刷新你的ht类 的view&nbsp;/**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Repaints&nbsp;this&nbsp;component.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;If&nbsp;this&nbsp;component&nbsp;is&nbsp;a&nbsp;lightweight&nbsp;component,&nbsp;this&nbsp;method&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;causes&nbsp;a&nbsp;call&nbsp;to&nbsp;this&nbsp;component's&nbsp;<code>paint</code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;method&nbsp;as&nbsp;soon&nbsp;as&nbsp;possible.&nbsp;&nbsp;Otherwise,&nbsp;this&nbsp;method&nbsp;causes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;a&nbsp;call&nbsp;to&nbsp;this&nbsp;component's&nbsp;<code>update</code>&nbsp;method&nbsp;as&nbsp;soon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;as&nbsp;possible.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<b>Note</b>:&nbsp;For&nbsp;more&nbsp;information&nbsp;on&nbsp;the&nbsp;paint&nbsp;mechanisms&nbsp;utilitized&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;by&nbsp;AWT&nbsp;and&nbsp;Swing,&nbsp;including&nbsp;information&nbsp;on&nbsp;how&nbsp;to&nbsp;write&nbsp;the&nbsp;most&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;efficient&nbsp;painting&nbsp;code,&nbsp;see&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<a&nbsp;href="http://www.oracle.com/technetwork/java/painting-140037.html">Painting&nbsp;in&nbsp;AWT&nbsp;and&nbsp;Swing</a>.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#update(Graphics)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@since&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JDK1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;repaint()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repaint(0,&nbsp;0,&nbsp;0,&nbsp;width,&nbsp;height);&nbsp;&nbsp;&nbsp;&nbsp;}

不负相思意

把int b = 0; 放到方法的外边for(int i=0;i<20;i++){//加适当的延时}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java