I am trying to change the name of a node in my JTree. For this, I use the following code:
public void changeNodeName(String newName) {
This code is working fine. So say that I want to rename node b in the image below to c. The code does this correctly, as shown in the figures.


However, if I dragged the node and placed it somewhere else in the tree, its name will return to the original name b.


So, obviously, I'm not changing something right here. How do I or what do I change to change the value of the nodes?
thanks
EDIT:
I have a class that extends DefaultMutableTreeNode. Here is the source
package Structure; import GUI.Window; import Logging.LogRunner; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JSeparator; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; public abstract class BCStructure extends DefaultMutableTreeNode { DefaultMutableTreeNode root; Window mainWindow; String name; JPopupMenu Pmenu; JMenuItem deleteMenuItem,renameMenuItem,newSectionMenuItem,newPageMenuItem; String type; public BCStructure(String newName,Window inWindow) { this(newName,inWindow,true); } public String getType() { return type; } public abstract BCStructure copy(); public BCStructure(String newName,Window inWindow,boolean letChildren) { super(newName,letChildren); mainWindow = inWindow; name = newName;
package Structure; import GUI.Window; import Logging.LogRunner; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JSeparator; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; public abstract class BCStructure extends DefaultMutableTreeNode { DefaultMutableTreeNode root; Window mainWindow; String name; JPopupMenu Pmenu; JMenuItem deleteMenuItem,renameMenuItem,newSectionMenuItem,newPageMenuItem; String type; public BCStructure(String newName,Window inWindow) { this(newName,inWindow,true); } public String getType() { return type; } public abstract BCStructure copy(); public BCStructure(String newName,Window inWindow,boolean letChildren) { super(newName,letChildren); mainWindow = inWindow; name = newName;
And in the example above, the actual nodes you see are a subclass of BCStructure called Page. This is the actual class that I renamed.
package Structure; import Components.BCFrame; import Components.Basic.BackGroundImage; import GUI.Window; import Logging.LogRunner; import XMLProcessing.XMLWriter; import java.awt.Color; import java.awt.Dimension; import java.util.ArrayList; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.tree.DefaultTreeCellRenderer; public class Page extends BCStructure { private ArrayList theComponents = new ArrayList() { @Override public boolean add(BCFrame e) { e.setPage(selfReference); return super.add(e); } }; private Page selfReference = this; private Dimension pageSize = Window.NORMAL; private BackGroundImage background; public Page(String newName, Window inWindow) { super(newName, inWindow,false); DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); ImageIcon theImage = new ImageIcon(new JFrame().getToolkit().getImage(getClass().getResource("/GUI/fileIcon.png"))); renderer.setLeafIcon(theImage);
package Structure; import Components.BCFrame; import Components.Basic.BackGroundImage; import GUI.Window; import Logging.LogRunner; import XMLProcessing.XMLWriter; import java.awt.Color; import java.awt.Dimension; import java.util.ArrayList; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.tree.DefaultTreeCellRenderer; public class Page extends BCStructure { private ArrayList theComponents = new ArrayList() { @Override public boolean add(BCFrame e) { e.setPage(selfReference); return super.add(e); } }; private Page selfReference = this; private Dimension pageSize = Window.NORMAL; private BackGroundImage background; public Page(String newName, Window inWindow) { super(newName, inWindow,false); DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); ImageIcon theImage = new ImageIcon(new JFrame().getToolkit().getImage(getClass().getResource("/GUI/fileIcon.png"))); renderer.setLeafIcon(theImage);