DefaultPersistenceDelegate ?

P

Proggo

Gast
Hallo, ich habe einen JTree. Jeder Knoten besitzt eine ID.

Code:
	public Category(String rId, String rName) {
	id = rId;
	name = rName;
	}
	String getID(){
		return id;		
	}
	String getName(){
		return id;		
	}
	 
	public String toString() { return name; }
}

Ich möchte das ganze serialisieren per XMLEncoder. Wie serialisiere ich die ID mit? Funktioniert das per DefaultPersistenceDelegate? Könnte mir Jemand das erklären wie das funkioniert?
 

jgh

Top Contributor
nein, aber heute ist auch der 4. Advent. Es soll einige Leute geben, die tatsächlich den Tag mit Freunden und Familie verbringen.

[ot]Dir auch ein fröhlichen 4. Advent[/ot]

Ansonsten sind 20 min nicht soooo lange, Geduld...ich habe leider keine Ahnung davon

[edit]ok, mmmh evtl ist das nicht so bekannt. aber gut, da kann man natürlich nochmal nachhacken ;)
viel Erfolg noch![/edit]
 
Zuletzt bearbeitet:
P

Proggo

Gast
Das folgende Beispiel bringt diese Exception:

java.lang.InstantiationException: JTreeDemo$UserObject
Continuing ...
java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new();
Continuing ...

Ich habe doch alles beachtet. Leerer Konstruktor ist auch drin. Wieso geht es nicht?

Code:
public class JTreeDemo extends JFrame {
 
    private JTree tree;
    private JLabel label = new JLabel(" ");
 
    public JTreeDemo() {
        this.setLocationByPlatform(true);
 
        DefaultMutableTreeNode root = new DefaultMutableTreeNode(new UserObject("12345", "test"));

        tree = new JTree(root);
        tree.getSelectionModel().addTreeSelectionListener(
                new TreeSelectionListener() {
                    public void valueChanged(TreeSelectionEvent e) {
                        DefaultMutableTreeNode selectedTreeNode = (DefaultMutableTreeNode) e
                                .getPath().getLastPathComponent();
                        UserObject userObject = (UserObject) selectedTreeNode
                                .getUserObject();
                        label.setText(e.getPath() + "\nNode ID:"
                                + userObject.getId());
                    }
                });

        this.add(new JScrollPane(tree), BorderLayout.CENTER);
        this.add(label, BorderLayout.SOUTH);
        this.pack();
        this.setVisible(true);

        addWindowListener(new WindowAdapter() {
       	 
            public void windowClosing(final WindowEvent e) {
                    try {
                        XMLEncoder o = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("tree.xml")));
                        o.writeObject(tree.getModel());
                        o.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                
                System.exit(0);
            }
        });
        
    }
 
    public static void main(String[] args) {
        new JTreeDemo();
    }
 
    public class UserObject{
        private String id;
 
        private String data;
        
        public UserObject() {
        } 
        public UserObject(final String id, final String data) {
            this.id = id;
            this.data = data;
        }
        public void setId(String id) {
            this.id=id;
        }
        public String getId() {
            return id;
        }
        public void setData(String data) {
            this.data = data;
        }
        public String getData() {
            return data;
        }
 
        public String toString() {
            return getId();
        }
    }
}
 

Oben