| 关于JTable的简单问题,在线等 |
| [ 来源:ITWENKU 时间:2006-9-7 19:43:10 | 浏览:199人次
] |
| |
|
代码如下,很简单:目的就是当我点击按钮后,希望JTable立即刷新.
但问题有两个,如下: 1.点按钮后刷新不了,需要我手动刷新后(例如用鼠标拖动来改变窗体大小),才能正确显示. 2.我现在来办法是,先把JTable从窗体中Remove掉,再创建个新的JTable,然后再add上去。但是我觉得这种办法有点不好,有没有直接update的办法?
非常感谢!分不够再加!
import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent;
public class TableTest extends JFrame{ JTable JJ; public TableTest(){ Object[][] data=new Object[20][2]; Object header[]= {"Name","Height"}; for (int i=0;i<20;i++) for (int j=0;j<2;j++) data[i][j]="table1"; JJ = new JTable(data,header); setLayout(new BorderLayout()); add(JJ,BorderLayout.CENTER);
JButton BB = new JButton("Update"); BB.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent me){ Object[][] dt=new Object[10][2]; Object hd[]= {"Type","Area"}; for (int i=0;i<10;i++) for (int j=0;j<2;j++) dt[i][j]="table2";
updateTable(dt,hd); } });
add(BB,BorderLayout.SOUTH);
}
public void updateTable(Object [][] data,Object[] header){ remove(JJ); JJ = new JTable(data,header); add(JJ,BorderLayout.CENTER); }
public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); TableTest KK = new TableTest(); KK.setBounds(0,0,300,300); KK.setVisible(true); KK.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
在点击按钮的时候调用JTable的updateUI方法 javax.swing.JTable aa=new javax.swing.JTable(); aa.updateUI();
多谢多谢。 我加了句TableTest.this.JJ.updateUI();果然就可以了。
但是请问你能回答我第二个问题么?
你第二个问题不就是你解决你第一个问题的方法吗? 还有什么疑问撒?
就是说必须先remove,然后再add才能刷新么?
aa.updateUI();这样就可以刷新了啊
那为什么我把 public void updateTable(Object [][] data,Object[] header){ remove(JJ); this.JJ = new JTable(data,header); add(JJ,BorderLayout.CENTER); }
改成 public void updateTable(Object [][] data,Object[] header){ this.JJ = new JTable(data,header); }
以后,即使用了updateUI()也刷新不了?
不用remove paint(Graphics g)重绘方法应该也可以,不过没有试过
哦,知道了. 谢谢,揭贴
aa.repaint();是这个重绘 上面错了
|
|
 |
推荐文章 |
|