title: JTree, setUserObject(), toString()
body: <p>What I'm trying to do is pretty simple, but running into some issues. I have a class and I`m overriding toString() with some value.</p>
  
  <pre><code>public class AClass {
  
  @Override
  public String toString() {
      int rand = 5 + (int) (Math.random() * 25);
      return Integer.toString(rand);
      }
  }
  </code></pre>
  
  <p>I have a JTree and I`m adding the class object to the node by using setUserObject(). The display on the node now has the value from toString().</p>
  
  <pre><code>            DefaultMutableTreeNode  node = new DefaultMutableTreeNode();
              node.setUserObject(new AClass());
              fileTreeModel.insertNodeInto(node, (DefaultMutableTreeNode) rootNode, 0);
              tree.setSelectionPath(new TreePath(fileTreeModel.getPathToRoot(node)));
              tree.expandPath(new TreePath(rootNode.getPath()));
  </code></pre>
  
  <p>But, when I click on the nodes or try to add a new node, the toString() values are changing. </p>
  
  <p>What`s going on here? Any help is greatly appreciated. 
  Here is some sample code.</p>
  
  <p>Main.java</p>
  
  <pre><code>import java.awt.Color;
  import java.awt.EventQueue;
  
  import javax.swing.JDesktopPane;
  import javax.swing.JFrame;
  import javax.swing.JButton;
  import javax.swing.JSplitPane;
  
  import java.awt.BorderLayout;
  
  import javax.swing.JTree;
  import javax.swing.tree.DefaultMutableTreeNode;
  import javax.swing.tree.DefaultTreeModel;
  import javax.swing.tree.TreePath;
  import javax.swing.tree.TreeSelectionModel;
  
  import java.awt.event.ActionListener;
  import java.awt.event.ActionEvent;
  
  import javax.swing.JScrollPane;
  
  
  public class Main {
  
  private JFrame frame;
  private JTree tree;
  private DefaultMutableTreeNode rootNode ;
  private DefaultTreeModel fileTreeModel;
  
  /**
   * Launch the application.
   */
  public static void main(String[] args) {
      EventQueue.invokeLater(new Runnable() {
          public void run() {
              try {
                  Main window = new Main();
                  window.frame.setVisible(true);
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      });
  }
  
  /**
   * Create the application.
   */
  public Main() {
      initialize();
  }
  
  /**
   * Initialize the contents of the frame.
   */
  private void initialize() {
      frame = new JFrame();
      frame.setBounds(100, 100, 450, 300);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
      JSplitPane splitPane = new JSplitPane();
      splitPane.setResizeWeight(0.2);
      frame.getContentPane().add(splitPane, BorderLayout.CENTER);
  
      JScrollPane scrollPane = new JScrollPane();
      splitPane.setLeftComponent(scrollPane);
  
      tree = new JTree();
      tree.setBackground(new Color(255, 235, 205));
      scrollPane.setViewportView(tree);
      rootNode = new DefaultMutableTreeNode("Files");
      fileTreeModel = new DefaultTreeModel(rootNode);
      tree.setModel(fileTreeModel);
      tree.getSelectionModel().setSelectionMode(
              TreeSelectionModel.SINGLE_TREE_SELECTION);
      tree.setRootVisible(true);
  
      JDesktopPane desktopPane = new JDesktopPane();
      desktopPane.setBackground(new Color(255, 255, 0));
      splitPane.setRightComponent(desktopPane);
  
      JButton btnNewButton = new JButton("New button");
      btnNewButton.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
  
              DefaultMutableTreeNode  node = new DefaultMutableTreeNode();
              node.setUserObject(new AClass());
              fileTreeModel.insertNodeInto(node, (DefaultMutableTreeNode) rootNode, 0);
              tree.setSelectionPath(new TreePath(fileTreeModel.getPathToRoot(node)));
              tree.expandPath(new TreePath(rootNode.getPath()));
          }
      });
      btnNewButton.setBounds(122, 115, 89, 23);
      desktopPane.add(btnNewButton);
  
      }
  
  }
  </code></pre>
  
  <p>AClass.java</p>
  
  <pre><code>public class AClass {
  
  @Override
  public String toString() {
      int rand = 5 + (int) (Math.random() * 25);
      return Integer.toString(rand);
      }
  
  }
  </code></pre>