Как переименовать узел в jtree - PullRequest
1 голос
/ 16 апреля 2011

Я создаю Jtree, в котором все его узлы имеют объект User, я заполняю объект user с помощью класса ItemInfo, теперь моя проблема заключается в переименовании узла. Я могу редактировать свой узел, но поскольку я пытаюсь найти свой UserObject, который я увидел, когда нажимаю F2 и переименовываю свой узел, новое имя помещается в мой UserObject!

Так что теперь я хочу знать, что мне следует коснуться того, где вручную заменить новое имя моего узла на предыдущее?

Я думаю, мне нужно написать свой собственный класс DefaultTreeCellRenderer, пожалуйста, посоветуйте мне ... (если да, какой-нибудь пример для моей справки)

public class ItemInfo {
    public String Name;
    public String Value;
    public long ValueID;


    public ItemInfo(String Name, String Value) {
        this.Name = Name;
        this.Value = Value;
    }

    public ItemInfo(String Name, long ValueID) {
        this.Name = Name;
        this.ValueID = ValueID;
    }

    public String toString() {
        return Name;
    }

    public String getValue() {
        return Value;
    }

    public long getValueID() {
        return ValueID;
    }
}

1 Ответ

2 голосов
/ 16 апреля 2011

Вы добавляете TreeModelListener, как описано в этом руководстве? В слушателе вы можете получать уведомления об изменении узла и обновлять его пользовательский объект.

РЕДАКТИРОВАНИЕ: См. DefaultTreeModel.valueForPathChanged javadoc:

Устанавливает объект пользователя TreeNode идентифицируется по пути и сообщениям узел изменился. Если вы используете пользовательский пользователь объекты в TreeModel вы собираетесь нужно подкласс этого и установить пользовательский объект измененного узла что-то значимое.

Переопределите этот метод и обновите ваш объект новым именем узла.

...