Knoten-Attribute einer xsd-Datei in einem JTree auslesen

P

Perplex

Hallo,

ich habe folgendes Problem:

ich habe ein JSplitPane in dem linkes eine geladene xsd-Datei als JTree angezeigt wird und rechts ein Panel in dem Eingabefelder erscheinen sollen wenn man die Knoten oder Blätter des JTrees anklickt!

Ein Knoten kann z.B. so aussehen:

<xsd:element name="description" type="xsd:string" minOccurs="0"/>

Nun will ich, daß das Attribu "name" ausgelesen wird und als JLabel im Panel erscheint. Dann soll im selbern Schritt das Attribut "type" ausgelesen werden um zu entscheiden wie das Eingabefeld aussehen soll, also z.B. ein Textfeld bei einem String oder eine Checkbox bei einem boolschen Wert. Dieses Eingabefeld soll rechts neben dem JLabel erscheinen. Mein Ansatz sieht jetzt so aus:
Code:
public void valueChanged (TreeSelectionEvent event){
    	
    	DefaultMutableTreeNode node = (DefaultMutableTreeNode) ((JTree) event.getSource()) 
        .getLastSelectedPathComponent(); 
        
    	if(node == null) 
            return; 
        
   
    	Object user = node.getUserObject(); 
    
    	 if(user instanceof Element){
    	 System.out.println(user);	
    	 	//Object e =  user; 
    	 	//AttributeSet name =  e.getAttributes(); 
    	 	//String name = (String) ((AttributeSet) e).getAttribute("name");
    	 	 Element e = (Element) user; 
    	 	String name = e.getAttribute("name"); 
            String type = e.getAttribute("type");
    	 	System.out.println(name);
    	 	//String type = (String) ((AttributeSet) e).getAttribute("type"); 
    	 	//System.out.println(type);
    	 	JLabel lab = new JLabel(name); 
    	 	Box upper = new Box(BoxLayout.X_AXIS);
    	 	upper.add(lab);
    	 	JComponent comp = null; 
    	 	
    	 	if(type.equals("xsd:element")){
    	 		
    	 		comp = new JTextField("hallo",20); 
    	 		upper.add(comp);
    	 		upper.add(lab);
    	 		mainbox.add(upper);
    	 	
    	 	}else if(type.equals("xsd:attribute")) {
    	 		
    	 		comp = new JCheckBox(); 
    	 		upper.add(comp);
    	 		upper.add(lab);
    	 		mainbox.add(upper);
    	 	}
    
    	 }
    }

Aber leider klappt das nicht! Wäre dankbar wenn Jemande einen Vorschlag hat wie ich bei Anklicken des Blatts "name" das Blatt "type" automatisch auslese und Anhand des Inhalts die Form des Eingabefelds bestimme und rechts neben dem Label(=Attribut-Wert von "name") anzeigen kann! Code-Beispiele wären auch sehr hilfreich!
 

Neue Beiträge

Zurück