本人初学Java 为什么这个paint方法只执行了1次 不是应该执行20次的吗?

importjava.awt.*;importjavax.swing.*;publicclasshtextendsJFrame{Wdmbmb=null;publicsta... 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++;
}
}
展开
 我来答
smileXbel
2016-11-08 · TA获得超过277个赞
知道小有建树答主
回答量:423
采纳率:100%
帮助的人:259万
展开全部

你的这个repaint  方法不刷新子view 的 视图;

我给你贴出来 方法的内部实现 ;

只刷新你的ht类 的view 

/**
     * Repaints this component.
     * <p>
     * If this component is a lightweight component, this method
     * causes a call to this component's <code>paint</code>
     * method as soon as possible.  Otherwise, this method causes
     * a call to this component's <code>update</code> method as soon
     * as possible.
     * <p>
     * <b>Note</b>: For more information on the paint mechanisms utilitized
     * by AWT and Swing, including information on how to write the most
     * efficient painting code, see
     * <a href="http://www.oracle.com/technetwork/java/painting-140037.html">Painting in AWT and Swing</a>.

     *
     * @see       #update(Graphics)
     * @since     JDK1.0
     */
    public void repaint() {
        repaint(0, 0, 0, width, height);
    }
更多追问追答
追问
不好意思,这段代码我一点也没看懂,这个是属于java那一块的知识啊?我回去看看
追答
this.repaint();  

刷新的是JFrame 而不是 JPanel

所以 也不会去打印你的 b的值
匿名用户
2016-11-07
展开全部
把int b = 0; 放到方法的外边

for(int i=0;i<20;i++){

//加适当的延时
}

~~~~~~~~~
追问
那个b的值无所谓了  我只想 知道为什么paint方法 只被调用了一次? 他不应该被调用20次吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式