SWT Tree Index

Ibanese

Mitglied
SWT TreeItem ID zuweisen > auslesen, geht sowas?

Hi,

ich möchte gern mit SWT einen simplen Tree erstellen. Wieviele Nodes, Children und Siblings dieser enthält ist erstmal egal, nur ...

wie kann ich feststellen, über welchem ich mich gerade befinde? Ich hab mit dem Listener schon die Items auslesen können, aber nur deren Namen. Können Items denn keine feste ID besitzen, die nicht im Tree angezeigt wird, wodurch sich die Elemente aber unterscheiden lassen?

, Martin

Mein Code
Code:
        final Tree tree;
          
        tree = new Tree(form.getBody(), SWT.BORDER);
        tree.setLayoutData(new GridData(GridData.FILL_BOTH));

        TreeItem item = new TreeItem(tree, SWT.NULL);
        item.setText(myform.getName()); // Root des Trees
        
        // beliebig viele Items setzen
        for(int i=0; i<10; i++) {
            TreeItem item2 = new TreeItem(item, SWT.NULL, i);
            item2.setText("item " + (i+1));
        }
 
Zuletzt bearbeitet:
Vielleicht hab ich mich unverständlich ausgedrückt


- Ich habe einen Baum
- dieser hat mehrere Items

> wenn jetzt alle Items gleich benannt sind, wie finde ich mit einem Listener heraus, an welcher Stelle ich mich denn gerade befinde? Über getItem() funktioniert das ja nicht, denn da wird der ItemName ausgegeben
> ich hab also an eine Art ID gedacht, welche man dem Item mit geben kann und auslesen kann, aber wie?

, Martin
 
Ich habs jetzt herausgefunden, wers wissen möchte ...

Code:
Form myform = new Form();

toolkit = new FormToolkit(parent.getDisplay());
form = toolkit.createScrolledForm(parent);
form.setText(myform.getName());
GridLayout layout = new GridLayout();
form.getBody().setLayout(layout);

final Tree tree = new Tree(form.getBody(), SWT.BORDER);
tree.setLayoutData(new GridData(GridData.FILL_BOTH));

TreeItem root = new TreeItem(tree, SWT.NONE);
root.setText(myform.getName());

ArrayList<String> array = new ArrayList<String>();
array.add("Hund");
array.add("Katze");
array.add("Maus");	    

// Array in den Tree schreiben
for(String foo : array) {
	TreeItem actitem = new TreeItem(root, SWT.NULL);
	actitem.setText(foo);
}

tree.addListener(SWT.Selection, new Listener() {
	public void handleEvent(Event event) {
		
		TreeItem item = (TreeItem)event.item;
		TreeItem parentItem = item.getParentItem();
		
		String text = null;
		
		if (parentItem == null) {
			text = "Item Name: " + item.getText() + "\n";
			text += "Item Index: " + tree.indexOf(item) + "\n" + "\n";
		} else {
	        	text = "Parent Item: " + parentItem.getText() + "\n";
	        	text += "Item Name:  " + item.getText() + "\n";
	        	text += "Item Index: " + parentItem.indexOf(item) + "\n" + "\n";
        	}
        	System.out.println(text);
	}
});

Schon nicht soo einfach, wenn man zum ersten ma Java programmiert ..., Martin
 
Zuletzt bearbeitet:
Zurück