Hallo, ich bin auf der Suche nach einem Weg ein Selektiertes Element eines Tree farblich zu markieren. Die Markierung soll solange erhalten bleiben, bis ein anderes Element aus dem selben Tree angewählt wird.
Ich habe dazu folgendes Snippet genutzt:
und dazu einen eigenen Listener geschrieben
Probleme: Bei Auswahl Eines Items aus dem anderen tree, wird die Farbe zurückgesetzt. Dabei soll es möglich sein in jedem tree genau 1 Element farblich zu markieren.
Ich habe dazu folgendes Snippet genutzt:
Java:
package org.eclipse.swt.snippets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
public class Snippet114 {
public static void main(String[] args) {
final Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Tree tree1 = new Tree(shell, SWT.BORDER | SWT.V_SCROLL
| SWT.H_SCROLL);
for (int i = 0; i < 12; i++) {
TreeItem item = new TreeItem(tree1, SWT.NONE);
item.setText("tree1 Item " + i);
for (int j = 0; j < i; j++) {
TreeItem items = new TreeItem(item, SWT.NONE);
items.setText("tree1 SubItem " + j);
}
}
tree1.addListener(SWT.Selection, new MyTreelistener());
Tree tree2 = new Tree(shell, SWT.BORDER | SWT.V_SCROLL
| SWT.H_SCROLL);
for (int i = 0; i < 12; i++) {
TreeItem item = new TreeItem(tree2, SWT.NONE);
item.setText("tree2 Item " + i);
for (int j = 0; j < i; j++) {
TreeItem items = new TreeItem(item, SWT.NONE);
items.setText("tree2 SubItem " + j);
}
}
tree2.addListener(SWT.Selection, new MyTreelistener());
shell.setSize(800, 600);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
und dazu einen eigenen Listener geschrieben
Java:
package org.eclipse.swt.snippets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.TreeItem;
public class MyTreelistener implements Listener {
TreeItem lastitem = null;
public void handleEvent(Event event) {
TreeItem item = (TreeItem) event.item;
if (lastitem != item) {
String string = null;
if (event.detail == SWT.None) {
if (lastitem != null)
lastitem.setBackground(item.getBackground());
lastitem = item;
item.setBackground(new Color(item.getDisplay().getCurrent(), 0, 255, 0));
string = "Selected";
}
System.out.println(event.item + " " + string);
}
}
}