java repaint()无效

初学java,绘图这里很搞不懂

package picture;

import javax.swing.*;
import java.awt.*;

/**
 * Created by Smith on 2016/10/19.
 */
public class Study extends JPanel{
    public int x = 1;
    public int y = 1;

    public static void main(String [] args)
    {
        new Study().init();
    }

    public void init()
    {
        JFrame jf = new JFrame("图片");
        JPanel jp = new JPanel();
        jf.add(jp);
        jf.setSize(600,600);
        jf.setVisible(true);
        Graphics g = jp.getGraphics();
        for(int i = 1;i<=500;i++)
        {
            paint(g);
            x++;
            y++;
        }
        System.out.println(g);

    }

    public void paint(Graphics g)
    {
        g.setColor(Color.blue);
        g.drawString("hello",x,y);
        repaint();
    }



}


图片描述

生成的效果图就是如上,我实际是想要hello进行移动,但repaint()放在这里为什么没有效果

阅读 5.3k
2 个回答

1.每次渲染前要清除之前的画布,否则会叠加起来

2.要想显示动画,需要设置休眠时间,否则也看不到中间过程

估计是因为你没有在 x=2, y=2 时清除之前 x=1, y=1 时写的 "hello", 所以他们都重叠在一起成了一条粗粗的蓝线 : )

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题