简单快速的JTree单元编辑器

简单快速的JTree单元编辑器,第1张

简单快速的JTree单元编辑器

自定义编辑器是没有办法的,它是最短的解决方案:-)另外,您将需要在 数据 领域中使用一些方法来解释编辑值,并通过自定义节点自行更新。

Fi(稍后会发表评论,我这台机器上的la脚的Firefox将我推向高墙

public class TreeEditDemo extends JPanel {    private JTree tree;    private DefaultMutableTreeNode root;    private DefaultTreeCellEditor editor;    public TreeEditDemo() {        super.setLayout(new GridLayout());        root = new DefaultMutableTreeNode("Nodes");        root.add(new MyResourceNode(new Resource("one", "first")));        root.add(new MyResourceNode(new Resource("two", "first")));        tree = new JTree(root);        tree.setEditable(true);        editor = new MyTreeCellEditor(tree, (DefaultTreeCellRenderer) tree.getCellRenderer());        tree.setCellEditor(editor);        this.add(new JScrollPane(tree));    }    private static class MyTreeCellEditor extends DefaultTreeCellEditor {        public MyTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) { super(tree, renderer);        }        @Override        public Component getTreeCellEditorComponent(JTree tree, Object value,     boolean isSelected, boolean expanded, boolean leaf, int row) { if (value instanceof MyResourceNode) {     value = ((MyResourceNode) value).getName(); } return super.getTreeCellEditorComponent(tree, value, isSelected, expanded,         leaf, row);        }        @Override        public boolean isCellEditable(EventObject e) { return super.isCellEditable(e)     && ((TreeNode) lastPath.getLastPathComponent()).isLeaf();        }    }    public static class MyResourceNode extends DefaultMutableTreeNode {                public MyResourceNode(Resource resource) { super(resource);        }        @Override        public void setUserObject(Object userObject) { if (userObject instanceof String) {     setName((String) userObject); } else if (userObject instanceof Resource) {     super.setUserObject(userObject); } }        public void setName(String name) { if (getUserObject() != null) {     getUserObject().setName(name); }        }        public String getName() { if (getUserObject() != null) {     return getUserObject().getName(); } return null;        }        @Override        public Resource getUserObject() { return (Resource) super.getUserObject();        }    }    private static class Resource {        String name;        private String category;        public Resource(String name, String category) { this.name = name; this.category = category;        }        public void setName(String name) { this.name = name;        }        public String getName() { return name;        }        @Override        public String toString() { // BEWARE: don't do this in production pre! return name + " (" + category + ")";        }    }    private void display() {        Jframe f = new Jframe("TreeEditorDemo");        f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        f.add(this);        f.pack();        f.setLocationRelativeTo(null);        f.setVisible(true);    }    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     new TreeEditDemo().display(); }        });    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5615555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存