关于javaswing中,点击jtree中的节点,控制一个table显示完全不同的数据内容(数据结构是相同的),该怎么做呢
唐朝月 2016-07-11 01:35:19 课设要求做一个垃圾邮件过滤系统,现在有一个tree,根节点是某个邮箱,有两个叶子节点分别是正常邮件和垃圾邮件,右边是一个table,默认情况下显示的是所有邮件的信息。现在我想做的是,点击叶子节点,使得table中相应显示正常邮件和垃圾邮件的信息。我给tree添加了TreeSelectionListener,相应代码是:
tree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
// TODO Auto-generated method stub
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (node == null)
return;
Object object = node.getUserObject();
if (node.isLeaf()) {
System.out.println("你选择了:" + object.toString());
if (object.toString().equals("正常邮件")) {
System.out.println("yes");
String [] input = {"1","2","3","4","5"};
defaultTableModel.addRow(input);
Object[][] data = null;
try {
//清除掉table的原有元素
defaultTableModel =(DefaultTableModel) table.getModel();
while(defaultTableModel.getRowCount()>0){
defaultTableModel.removeRow(defaultTableModel.getRowCount()-1);
}
//这是返回正常邮件信息,经检查没有错误是对的
Object [][]data = ReceiveListener.returnNormalMailObject();
Object [] column = {"日期","发送者","有无附件","主题","大小(/B)"};
defaultTableModel = new DefaultTableModel(data,column);
table = new JTable(defaultTableModel);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else {
System.out.println("no");//还没写
}
}
}
});
。结果不对,点击叶子节点不但没有数据显示,连table的表头也没有了。请问在这里怎样才能显示table内容呢?现在做课设现学现用,不太懂==。望各位提提意见。