If I understand you correctly, you're looking for something like this?
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class JTreeEditing extends JFrame {
private JTree tree;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JTreeEditing();
}
});
}
private JTreeEditing() {
tree = new JTree();
// make sure a double-click doesn't expand the tree. e.consume() in our MouseListener doesn't do this for us
tree.setToggleClickCount(5);
tree.addMouseListener(new MyMouseListener());
Container content = getContentPane();
content.setLayout(new BorderLayout());
JScrollPane sp = new JScrollPane(tree);
sp.setPreferredSize(new Dimension(500, 300));
content.add(sp, BorderLayout.CENTER);
pack();
setVisible(true);
}
private class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
// perform editing; note defaults of String, because we're using the example model that
// JTree defaults to
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getSelectionPath().getLastPathComponent();
String s = (String) node.getUserObject();
String newString = JOptionPane.showInputDialog("Please enter the new string:", s);
if (newString != null) {
node.setUserObject(newString);
}
e.consume();
}
}
}
}