我是用JAVA去写了一个图形界面,并且需要把数据库中的数据以表格的形式显示在Jpanel容器上。
当我成功把一张表弄出来后,再点击按钮,想查看另外一张表。
但是,我点击按钮,读取另一张表的时候,Jpanel上没有变化,表的内容没变,但是当我把程序最小化再弹出来后,表就替换显示成功了。
我的写法是执行sql语句,把表格放在Jpanel上显示,当我需要替换另一张表格的时候,就把当前的图表给remove掉,再重新执行sql语句。按道理,它会直接显示出来,但是它却需要最小化后才能显示。我没写paint画图,应该没和双缓冲有关系把?请问,这是什么问题造成的呢?我要怎样写才能使这个这些图表能瞬间完成互换显示。
求懂得朋友们指导

解决方案 »

  1.   

    把原来的界面对象释放掉,重新new一个
      

  2.   

    更新完图表后,repaint/updateUI 一次。
      

  3.   

    悲剧啊,还是不行,用JAVA做图形界面简直就是悲剧,太不爽了,我还是改用C#做吧。
      

  4.   

    首先显示 表格 有JTable。更新 TableModel,JTable的显示会自动更新。其次,最小化再恢复后可以显示说明经过一次重绘,这个应该是你更新数据后调用的,结果没有。
      

  5.   

    更新完图表后,repaint/updateUI 一次。怎么弄?
      

  6.   

    panel.repaint(); 
    or 
    panel.updateUI();panel 就是你显示图表的JPanel。你没有override paintComponent方法的话,怎么使用JPanel显示的图表
      

  7.   

    终于成功了,能正常显示了。感谢 huntor大神的帮助!我用了repaint方法,但这样也不能正常显示,最后,我把其中的一个Jpanel的setVisible属性设为了false后又设回成true后就好了。
      

  8.   

    最后问问大家,我要设置什么地方,才能让这个表格填满Jpanel,并且拥有上下、左右滚动条??
      

  9.   


    jpanel.add(jtable, BorderLayout.CENTER);->jpanel.add(new JScrollPane(jtable), BorderLayout.CENTER);重绘的问题,不知道你是怎么换的表格,试试 panel.invalidate();