一直搞不清楚java刷新的原理。
譬如我有一个JFrame,里面包括JScrollPane theScrollPane
然后JScrollPane里面包括一个JPanel thePanel
在这个JPanel里面我开始画线、画矩形,然后
需要刷新的时候,调用thePanel.repaint()不行,必需调用theScrollPane.repaint(),
这个是为什么?
还有,我在thePanel里面显示一个消息框,
JOptionPane.showMessageDialog(...
当用户点击ok按钮的时候,怎么也刷新不了,有一个消息框的影子挂在thePanel里面,你如果最小化、最大化一下,就刷新了,真的不明白为什么出现这样的情况?
到底怎么样才能刷新?
JPanel、JScrollPane、JFrame的刷新机制有没有不同?
一般的画线、画矩形和弹出的对话框,刷新机制又有什么不同?
迷惑了很久了,希望能有人指点我一下。
谢谢。

解决方案 »

  1.   

    我记得应该是thePanel.add(theScrollPane);说明theScrollPane在thePanel的上面,所以需要对它进行刷新。
    你说的刷新问题我也遇到过,我看书上讲过用线程来解决刷新的问题,虽然是个很好的方法,但自己没有实现过,你可以找找相关的资料。
      

  2.   

    非常感谢zzb23(zzb)不过,我还是不了解内幕,现在正在看一本书
    Java Swing
    希望看完能够找到答案
      

  3.   

    不用谢,因为我也并没有真正帮到你,我建议你可以上一些国外的论坛或用google搜一下,至于那些市面上的书,我看了一些,很少有深入讲解这个的,我记得好象是在网上看到的文章,那个人发的关于刷新的问题的解决,你可以找找
      

  4.   

    Thread th=new Thread(this);
    run(!Pause){
       draw something
       repaint();}
      

  5.   

    我认为这是Applet方面的知识。
    建议你找找这方面的东西