Извините, но мы не можем ответить на ваш вопрос, потому что мы не видим ваш полный код. Пожалуйста, предоставьте исполняемый класс , который воспроизводит ваше некорректное поведение, чтобы мы могли легче определить, где ваша ошибка.
Вот небольшой пример того, как обеспечить редактирование дерева для клавиши F2
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
/**
* <code>TestTree</code>.
*/
public class TestTree {
public static void main(String[] args) {
SwingUtilities.invokeLater(new TestTree()::startUp);
}
private void startUp() {
JTree tree = new JTree();
tree.setEditable(true);
tree.getActionMap().put(tree.getInputMap().get(KeyStroke.getKeyStroke("F2")), new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
if (tree.getSelectionPath() != null) {
tree.startEditingAtPath(tree.getSelectionPath());
} else {
JOptionPane.showMessageDialog(tree, "Nothing selected");
}
}
});
JFrame frm = new JFrame("edit tree");
frm.add(new JScrollPane(tree));
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.setSize(300, 200);
frm.setLocationRelativeTo(null);
frm.setVisible(true);
}
}