paintComponent(Graphics g) 中建一个Image对象,先把图形画在image上,再把这个image 画出来

解决方案 »

  1.   

    JPanel 是支持双缓冲的,只是默认情况下没有打开。你可以添加代码打开双缓冲功能。
    setDoubleBuffered(boolean aFlag) 
    这是 JComponent 的 method。
    --------------
    如果这个方法不行的话,你不妨建立自己的一双缓冲。
    申明一个 BufferedImage 对象,其它大小等于你的 JPanel,然后先将所有的东西都画在这个 BufferedImage 上,最后一次性把这个 BufferedImage 画到 JPanel。
    --------------
    如果还是不行,我也没办法了。
      

  2.   

    忘说了,我的程序 在 paintComponent(Graphics g)不但画了图像,还在里面加入 add(new JLabel("aaa"))等诸如此类的语法!!
      

  3.   

    为什么要在paintComponent(Graphics g)里面加入 add(new JLabel("aaa"))?
    paintComponent 会不断地被调用啊