JTree. Editting.

I'm using a Jtree component, but i need to change the default behavior on editting. I need to change the event to edit a Tree node, in order to use a double-click to start editting instead of thee.Thanks
[218 byte] By [EFuentesa] at [2007-11-27 9:12:59]
# 1
Pls. be clear what you want.By default the click count is 2.if u want to change, the click count to the user defined, the following code will be helpfulobjTree.setToggleClickCount(3);
nirgun_xyza at 2007-7-12 22:00:01 > top of Java-index,Desktop,Core GUI APIs...
# 2
that is (ToggleClickCount) to change the event to expand/collapse a node , but we need to change the event to edit a node
EFuentesa at 2007-7-12 22:00:01 > top of Java-index,Desktop,Core GUI APIs...
# 3

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();

}

}

}

}

mbmerrilla at 2007-7-12 22:00:01 > top of Java-index,Desktop,Core GUI APIs...