我在一个循环中改变一个文本区的值,循环次数较大,文本框应该在每次修改后就显示更新后的值,但我执行的结果是直到循环结束才把结果显示出来,之前全是空白,我调用了repaint也不行。
while (rs2.next())
{
  ...
  text.append("第" + Integer.toString(i) + "记录处理完毕!\n");
  text.repaint();
}

解决方案 »

  1.   

    public void paintComponent(Graphics g)
    {
       super.paintComponent(g);
       //code here......
    }
      

  2.   

    典型的线程问题,刷新后可以调用yield方法。
      

  3.   

    Maybe is your thread
    可能是线程问题引起的吧
      

  4.   

    paintComponent()和组件重绘是在同一线程内进行的。paintComponent()在另一个buffered image里绘图,他返回后由swing代码重绘组件。所以你的代码必须放到另一个线程里。
      

  5.   

    继承与JComponent的Swing组件作为绘图区域时,JCompoent的子类应该重写paintComponent方法,并且在重写的方法体中,第一条语句应该调用paintComponent方法的超类版本。因为JComponent的子类支持透明醒(transparency),想要正确地绘制组件,程序必须确定组件是否透明,而该功能代码是由超类的paintComponent方法中。当组件是透明是,不会清除组件背景,而大多数Swing组件是默认透明的。