JTreeTable更新

时间:2011-08-31 08:29:34

标签: java jtable jtree updating jtreetable

我正在尝试使用http://java.sun.com/products/jfc/tsc/articles/treetable2/index.html中的示例,其中我用我的模型替换了文件系统模型。

我最初创建一个模型,我在JTreeTable中显示它,但现在我想更新我的模型然后JTreeTable(例如我想在树上添加一个节点,修改节点,删除节点等。)。

我不知道怎么做。我看不到允许我做我想做的方法,我只看到一些方法,如treeNodesChangedtreeNodesInserted等,但我可能会错过这个{{1的全局逻辑组件。

此外我不确定我是否正确创建模型,因为在各种示例中我看到人们在“模型”对象(JTreeTablemodel.insertNodeInto)上调用各种方法,尽管我没有模型对象。在上面的例子中,简单地称为抽象类model.reload,它实现了AbstractTreeTableModel ..

更新

TreeTableModel

在我的主课程中,我以这种方式将对象添加到我的模型中:

public class TableModel extends AbstractTreeTableModel 
                         implements TreeTableModel {
 static protected String[]  cNames = {"TrackNumber", "MWRTN", "LSRTN", "RFTN","TrackStatus","Prova","Prova2"};
    // Types of the columns.
 static protected Class[]  cTypes = {TreeTableModel.class,Integer.class, Integer.class, Integer.class, Integer.class,String.class,String.class};

 private ArrayList<Object> data=new ArrayList<Object>();
     public void insertNode(Object node)
     {    this.data.add(node);    super.setRoot(data.get(0));}

然后我将模型传递给我的... model =new TableModel(); model.insertNode(threatList.get(i)); //inserting the root node model.addChild(threatList.get(i),threatList.get(j)); // inserting the child ... 并将其添加到我的框架中:

JTreeTable

这是JTreeTable类:

treeTable = new JTreeTable(model);
JScrollPane scroll=new JScrollPane(treeTable);
scroll.setAutoscrolls(false);
scroll.setPreferredSize(new Dimension(1000,80));
frame.add(scroll);

在添加(或修改或删除)孩子之后,我想要发起一个事件。

1 个答案:

答案 0 :(得分:2)

模型是保存数据的类。它必须在每次数据更改时告诉其视图,以便视图刷新自身并显示模型的新数据。这是方法fireXxx()的目标。

与其他Swing组件一样,当您更改组件显示的数据时,您应该通过更改模型中的数据来执行此操作,并调用相应的fireXxx方法。最好的办法是将它封装在模型类中,方法是在您的AbstractTreeTableModel子类中添加特定的方法,这些方法执行数据修改并使用一次或多次调用fireXxx来触发相应的事件。

我建议您阅读有关tables和/或trees的Swing教程,然后将您在此学到的知识应用到树表中。这个想法是一样的。