2016-06-13 3 views
2

JTreesで単語の折り返しを使用する方法があるかどうかは疑問でした。私はノードのテキストにHTMLを使用していますが、重要かどうかは分かりません。JTreeで単語を折り返す

screenshot

+0

にアンドリューの答えを参照してください? – Beniton

+0

私は残念ながら今何を試すことができるのか分かりません。私は、JLabelでセルレンダラーを置き換えることを考えていましたが、既定のセルレンダラーはすでに1つであるため、何かを行います。 – utybo

+1

それは私が思っていたよりもトリックです、+1、私はこれのための素晴らしい解決策を見たいと思います。 (ラップされた!)行の高さを正しく取得し、各レンダラーコンポーネントに適切な幅を割り当てるのは面倒です。 – Marco13

答えて

2

次のように入力してください。

 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

+0

ありがとう、これは私が考えていた問題ではない、私はこれについて考えていた:http://imgur.com/UhC8AKgテキストがカットされて参照してください – utybo

+0

@utybo _Hello世界を参照してください! blahblahblah_それはhtmlです。 htmlを使用して長いコンテンツをラップすることができます。 – Beniton

+0

私はそれを見ましたが、明示的に改行をしています。これは私がやりたいことではありません。私はJTextAreaのsetLineWrap(ブール値)のような単語の折り返しにしたいと思います – utybo

関連する問題