Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Text cut off in a JTree leaf

843807Sep 21 2009 — edited Sep 21 2009
Hello, I am using a JTree to show some data. The data is displayed in the right way, but when I modify the text in a leaf, and make it longer, the text is cut off and the text ends with "..."
Is there some way to make the component where text is displayed longer in order to display the text correctly? I have tried to use a custom TreeCellRenderer and create a new JLabel with the new value of the text. But I didn't get a satisfactory result. Any ideas?
The code below shows and example of a JTree. The button modifies the text of the selected node.
package test.jtree;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

public class AppTestJTree extends javax.swing.JFrame {

  private javax.swing.JButton btnChangeText;
  private javax.swing.JPanel jPanel1;
  private javax.swing.JScrollPane jScrollPane1;
  private javax.swing.JTree tree;

    public AppTestJTree() {
        super("Test JTree");
        initComponents();
        initTree();
    }

    /**
     * main program
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new AppTestJTree().setVisible(true);
            }
        });
    }

    @SuppressWarnings("unchecked")                   
  private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jScrollPane1 = new javax.swing.JScrollPane();
    tree = new javax.swing.JTree();
    btnChangeText = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jPanel1.setMinimumSize(new java.awt.Dimension(266, 300));
    jPanel1.setPreferredSize(new java.awt.Dimension(266, 300));
    jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.LINE_AXIS));

    jScrollPane1.setMinimumSize(new java.awt.Dimension(150, 150));

    tree.setModel(null);
    jScrollPane1.setViewportView(tree);

    jPanel1.add(jScrollPane1);

    btnChangeText.setText("Change text");
    btnChangeText.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        btnChangeTextActionPerformed(evt);
      }
    });
    jPanel1.add(btnChangeText);

    getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

    pack();
  }

private void btnChangeTextActionPerformed(java.awt.event.ActionEvent evt) {                                              
  TreePath[] paths = tree.getSelectionPaths();
  if (paths != null) {
    for (int i = 0; i < paths.length; i++) {
      Object node = paths.getLastPathComponent();

if(node instanceof DefaultMutableTreeNode){
DefaultMutableTreeNode leaf = (DefaultMutableTreeNode) node;
leaf.setUserObject((String)leaf.getUserObject() + (String)leaf.getUserObject());
}
}
tree.repaint();
}
}

private void initTree() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");

for(int i = 0; i < 3; i++){
DefaultMutableTreeNode branch = new DefaultMutableTreeNode("branch " + i);
DefaultMutableTreeNode leaf = new DefaultMutableTreeNode("child " + i);
branch.add(leaf);

root.add(branch);
}

DefaultTreeModel model = new DefaultTreeModel(root);
tree.setModel(model);
tree.expandRow(3);
}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 19 2009
Added on Sep 21 2009
2 comments
1,176 views