Как получить уникальный идентификатор или значение каждого узла в jtree?

Я новичок в jtree. Я хочу получить уникальный идентификатор или значение отдельных узлов, у которых есть один и тот же родительский элемент.

Я пробовал использовать метод valuechanged (), но могу получить только строковое значение каждого узла.

Я хочу сравнить текущий узел выбора с некоторым уникальным значением конкретного узла. Как я могу этого добиться?

Думаю, я проясняю.

Есть ли какие-нибудь возможности?

Заранее спасибо..


person Babu R    schedule 13.07.2012    source источник


Ответы (2)


TreeNode имеет метод getParent (), вы можете сравнить ссылку на объект, возвращаемую с ним, с помощью ==.

Если вам действительно нужен уникальный идентификатор, основанный на идентификаторе объекта, рассмотрите System.identityHashCode. См. Следующий вопрос: Как получить ссылку на объект в java, если toString () и hashCode () были переопределены?

person lbalazscs    schedule 13.07.2012
comment
Но это уникальное значение изменилось, когда я снова запустил проект. Как решить мою проблему? Пожалуйста помогите.... - person Babu R; 16.07.2012
comment
Если вы хотите, чтобы значение оставалось неизменным после перезапуска приложения, нет простого способа, вам нужно реализовать эту логику где-нибудь самостоятельно (например, в поле userObject DefaultMutableTreeNode). - person lbalazscs; 18.07.2012

Я работал над установкой уникального идентификатора для DefaultMutableTreeNode. Один из методов - создать простой класс CustomUserObject, который имеет два свойства, идентификатор и заголовок. Затем мы можем назначить экземпляр CustomUserObject как свойство Node UserObject.

Чтобы убедиться, что в древовидной структуре отображается только заголовок, переопределите метод toString () в классе CustomUserObject.

/* CustomUserObjectClass */

public class CustomUserObject implements Serializable {

    private int Id = 0;
    private String Title = null;

    public CustomUserObject(int id, String title) {

        this.Id = id;
        this.Title = title;

    }

    public CustomUserObject() {

    }

    public int getId() {
        return this.Id;
    }

    public String getTitle() {
        return this.Title;
    }

    public void setId(int id) {
        this.Id = id;
    }

    public void setSutTitle(String title) {
        this.sutTitle = title;
    }

    @Override
    public String toString() {
        return this.Title;

    }  

Теперь, чтобы создать новый узел:

CustomUserObject uObj = new CustomUserObject(1, "My First Node");
DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(uObj);

uObj = childNode.getUserObject();
uObj.getId();
uObj.getTitle();
person vat    schedule 27.03.2014