当前页面: 开发资料首页 → J2SE 专题 → [50分赠一人]关于JTable的简单问题,在线等
[50分赠一人]关于JTable的简单问题,在线等
摘要: [50分赠一人]关于JTable的简单问题,在线等
代码如下,很简单:目的就是当我点击按钮后,希望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[]= {-#34;Name-#34;,-#34;Height-#34;};
for (int i=0;i-#60;20;i++)
for (int j=0;j-#60;2;j++)
data[i][j]=-#34;table1-#34;;
JJ = new JTable(data,header);
setLayout(new BorderLayout());
add(JJ,BorderLayout.CENTER);
JButton BB = new JButton(-#34;Update-#34;);
BB.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
Object[][] dt=new Object[10][2];
Object hd[]= {-#34;Type-#34;,-#34;Area-#34;};
for (int i=0;i-#60;10;i++)
for (int j=0;j-#60;2;j++)
dt[i][j]=-#34;table2-#34;;
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();是这个重绘
上面错了