java 中的paint自动执行两次吗?

解决方案 »

  1.   

    很多情况下paint方法都会被调用,
    包括:
    1、第一次显示
    2、被缩放
    3、被其它窗口遮住
    4、重新可见
    等等java定义为:任何应该被调用的时候,都会调用paint()方法来重绘。所以不明白你的问题是什么意思。
      

  2.   

    還有你調用repaint的時候paint  不會自動執行兩次
      

  3.   

    不会自动执行两次,执行了就看看代码哪里触发了再次paint
      

  4.   

    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    public class MyCanvas extends Canvas{
    private static int re=0;
    public void paint(Graphics g) {
    System.out.println(re++);}
    }
    public class TestFrame extends Frame{
    TestFrame(String s) {
    super(s);
    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    TestFrame f = new TestFrame("Test");
    f.setBounds(350, 50, 600, 710);
    MyCanvas mc =new MyCanvas();
    f.add(mc);
    System.out.println(" ");
    //之前没执行paint
    f.setVisible(true);//执行了两次paint
    }
    }
    这是为什么啊?
      

  5.   

    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    public class MyCanvas extends Canvas{
    private static int re=0;
    public void paint(Graphics g) {
    System.out.println(re++);}
    }
    public class TestFrame extends Frame{
    TestFrame(String s) {
    super(s);
    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    TestFrame f = new TestFrame("Test");
    f.setBounds(350, 50, 600, 710);
    MyCanvas mc =new MyCanvas();
    f.add(mc);
    System.out.println(" ");
    //之前没执行paint
    f.setVisible(true);//执行了两次paint
    }
    }
    这是为什么啊?
      

  6.   

    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    public class MyCanvas extends Canvas{
    private static int re=0;
    public void paint(Graphics g) {
    System.out.println(re++);}
    }
    public class TestFrame extends Frame{
    TestFrame(String s) {
    super(s);
    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    TestFrame f = new TestFrame("Test");
    f.setBounds(350, 50, 600, 710);
    MyCanvas mc =new MyCanvas();
    f.add(mc);
    System.out.println(" ");
    //之前没执行paint
    f.setVisible(true);//执行了两次paint
    }
    }
    这是为什么啊?怎么避免呢?
    因为我在做一个动态演示过程,尅是他老是自动刷两遍
      

  7.   

    楼主的问题可以用双缓冲区解决,那样无论自动paint几次都无所谓了
      

  8.   

    每次都是执行两次,很郁闷。我用的Myeclipse