How to add add TreeModelListener to NetBeans Schema?

I use the OutBeans Outline model to create a TreeTable, the technique described is described here :

Everything looks beautiful and clean, and now I want to add a TreeModelListener to my model to listen for changes in the model:

Outline outline = new Outline();
MyNode root = new MyNode("data", 0);
//...
TreeModel treeMdl = new MyTreeModel(root);
OutlineModel mdl = 
DefaultOutlineModel.createOutlineModel(treeMdl, new MyRowModel(), true, "Data");
mdl.addTreeModelListener(new MyTreeModelListener());
outline.setModel(mdl);
//...

public class MyTreeModelListener implements TreeModelListener {
    public void treeNodesChanged(TreeModelEvent e) {
        System.out.println("Something happend");

    }

    public void treeNodesInserted(TreeModelEvent e) {
        // TODO Auto-generated method stub

    }

    public void treeNodesRemoved(TreeModelEvent e) {
        // TODO Auto-generated method stub

    }

    public void treeStructureChanged(TreeModelEvent e) {
        // TODO Auto-generated method stub

    }

}

Everything works as expected, but my problem is below, I wrote my own TreeModel class, and this obviously means I have to write my own method addTreeModelListener, but how to do it?

public class MyTreeModel implements TreeModel {

    private MyNode root;

    public MyTreeModel(SdbNode root) {
        this.root = root;
    }

    @Override
    public void addTreeModelListener(TreeModelListener l) {
        //TODO:
    }

    //...
}
+3
source share
1 answer

javax.swing.event.EventListenerList . add, remove getListeners , , .

: , .

:

    private EventListenerList listeners = null;

    public void addTreeModelListener(TreeModelListener l) {
        if (l == null)
            return;
        if (listeners == null)
            listeners = new EventListenerList();
        listeners.add(TreeModelListener.class, l);
    }

    public void removeTreeModelListener(TreeModelListener l) {
        if (l == null)
            return;
        if (listeners == null)
            return;
        listeners.remove(TreeModelListener.class, l);
    }

    private void fireTreeStructureChanged(TreeModelEvent e) {
        if (e == null)
            return;
        if (listeners == null)
            return;
        TreeModelListener[] ll = listeners.getListeners(TreeModelListener.class);
        for(int i = 0; i < ll.length; i++)
            ll.treeStructureChanged(e);
    }

, , treeNodesInserted, treeNodesRemoved treeNodesChanged

+1

Source: https://habr.com/ru/post/1728990/


All Articles