java - 用 JTree 自动换行

标签 java swing jtree word-wrap

我想知道是否有任何方法可以在 JTrees 中使用自动换行。我在节点文本中使用 HTML,我不确定这是否重要。

screenshot

最佳答案

好的,你可以像下面这样尝试。

        JTree tree = new JTree();
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Animals");
        DefaultTreeModel model = new DefaultTreeModel(root);
        tree.setModel(model);
        root.add(new DefaultMutableTreeNode(new Animal("Dog","ACS")));
        root.add(new DefaultMutableTreeNode(new Animal("Cat","BCS")));
        root.add(new DefaultMutableTreeNode(new Animal("Lion","FCS")));
        root.add(new DefaultMutableTreeNode(new Animal("Tiger","<html>Hello World!<br>blahblahblah</html>")));

        DefaultTreeSelectionModel sModel = new DefaultTreeSelectionModel(); 
        sModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        tree.setSelectionModel(sModel);
        tree.addTreeSelectionListener(new TreeSelectionListener() {

            @Override
            public void valueChanged(TreeSelectionEvent selection) {
                DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)selection.getPath().getLastPathComponent();
                if(selectedNode.isLeaf()){
                    Animal animal = (Animal)selectedNode.getUserObject();
                }
            }
        });
        tree.setCellRenderer( new DefaultTreeCellRenderer(){

            @Override
            public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded,
                    boolean leaf, int row, boolean hasFocus) {
                if(value != null ){
                    DefaultMutableTreeNode node =  (DefaultMutableTreeNode)value;
                    if(node.isLeaf()){
                        Animal animal = (Animal)((DefaultMutableTreeNode)value).getUserObject();

                        this.setText(animal.name);
                    }else {
                        return super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
                    }
                } 
                return this;
            }

        });

这给了我下面的输出。

enter image description here

希望对你有帮助。

要自动换行您可以使用 html 的内容

请引用安德鲁在这个link中的回答

关于java - 用 JTree 自动换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37788636/

相关文章:

java - 如何在 JList 中找到一个项目并将其设置为选定值?

java - 可编辑的 JTree 将树节点转换为字符串

java - jtree 中的 jtable 具有不同的行数

java - Selenium Java 无法选择 AngularJS 元素

java - AWS 上的架构 : Running a distributed algorithm on dynamic nodes

java - 为什么我无法在 JPanel 上调整 JButton 的大小或重新定位?

Java:如何以编程方式选择和展开 JTree 中的多个节点?

java - 带类型参数的接口(interface)有什么用?

java - 快速执行多个 CREATE 语句的方法

java - 用 Java 设计源代码编辑器,设计问题 :