Binding HashMap<String, String> to MutableTreeNode

谁说我不能喝 提交于 2019-12-24 13:16:19

问题


I need to bind a Hashmap to a MutableTreeNode so that I can display that in a JTree.

I have the following code:

static Map<String, String> form = new LinkedHashMap<String,String>();

I guess this is how I need to implement MutableTreeNode. I just don't know how to procees now to get the Key's of "form" to show up in the MutableTreeNode.

public class MyNode implements MutableTreeNode {

    @Override
    public Enumeration children() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean getAllowsChildren() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public TreeNode getChildAt(int childIndex) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int getChildCount() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public int getIndex(TreeNode node) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public TreeNode getParent() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean isLeaf() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void insert(MutableTreeNode arg0, int arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public void remove(int arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void remove(MutableTreeNode arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void removeFromParent() {
        // TODO Auto-generated method stub

    }

    @Override
    public void setParent(MutableTreeNode arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void setUserObject(Object arg0) {
        // TODO Auto-generated method stub

    }

After the MutableTreeNode correctly shows the correct Key value, I want to be able to do:

final JTree tree = new JTree();
final DefaultMutableTreeNode CustomNode = new DefaultMutableTreeNode("Custom");
DefaultTreeModel tm = new DefaultTreeModel(CustomNode);
tree.setModel(tm);

for (String str : form.keySet())
        {
          MyNode nod = new MyNode(str);
          CustomNode.add(node);           
        }
tm.reload();

回答1:


You probably want a custom implementation of the TreeModel interface. As noted in How to Use Trees: Creating a Data Model,

The TreeModel interface accepts any kind of object as a tree node. It does not require that nodes be represented by DefaultMutableTreeNode objects, or even that nodes implement the TreeNode interface.

Although your Map<String, String> is not intrinsically hierarchical, you may get an idea from the GenealogyModel, cited here, or the FileTreeModel cited here and here.



来源:https://stackoverflow.com/questions/16072182/binding-hashmapstring-string-to-mutabletreenode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!