Hallo,
seit ca. 2 Wochen beschäftigte ich mich für ein kleines Projekt mit SWT. Meine Shell/Display besteht aus einem Header(oben), einem Navigationsbereich (links), dem Contentbereich (rechts) und dem Footer(unten). Das Layout habe ich mittels GridLayout und FillLayout gelöst. Die Navigationsleiste besteht aus einem Tree und einem Rahmen. Diese ist Anfangs nur so groß, dass gerade alle Elemente ohne Scrollbalken angezeigt werden. Wenn ich einen Unterpunkt aufklappe (SWT.Expand) wird ein Scrollbalken angezeigt. Ich möchte aber, dass sich der vertikale Bereich der Navigation so vergrößert, dass die Elemente ohne Scrollbalken angezeigt werden können.
Ich habe bereits verschiedene Ansätze probiert (resize, update, etc) allerdings reagiert er auf keinen dieser Befehle. Ich habe auch festgestellt, wenn ich einen Unterpunkt aufklappe und das Window maximiere um es danach wieder zu minimieren, wird die Größe der Navigation so angepasst, dass kein Scrollbalken angezeigt werden muss...
Wäre schön, wenn mir jemand von euch einen Tipp geben könnte, wie ich das Problem in den Griff bekomme.
Vielen Dank, David
edit: Ich habe eben mal einen Snippet geschrieben, der vllt das Problem etwas besser beschreibt. Habe auch versucht die Größe einfach mal auf irgendeinen Wert zu ändern, wenn der Tree aufgeklappt wird, allerdings ohne Erfolg.
seit ca. 2 Wochen beschäftigte ich mich für ein kleines Projekt mit SWT. Meine Shell/Display besteht aus einem Header(oben), einem Navigationsbereich (links), dem Contentbereich (rechts) und dem Footer(unten). Das Layout habe ich mittels GridLayout und FillLayout gelöst. Die Navigationsleiste besteht aus einem Tree und einem Rahmen. Diese ist Anfangs nur so groß, dass gerade alle Elemente ohne Scrollbalken angezeigt werden. Wenn ich einen Unterpunkt aufklappe (SWT.Expand) wird ein Scrollbalken angezeigt. Ich möchte aber, dass sich der vertikale Bereich der Navigation so vergrößert, dass die Elemente ohne Scrollbalken angezeigt werden können.
Ich habe bereits verschiedene Ansätze probiert (resize, update, etc) allerdings reagiert er auf keinen dieser Befehle. Ich habe auch festgestellt, wenn ich einen Unterpunkt aufklappe und das Window maximiere um es danach wieder zu minimieren, wird die Größe der Navigation so angepasst, dass kein Scrollbalken angezeigt werden muss...
Wäre schön, wenn mir jemand von euch einen Tipp geben könnte, wie ich das Problem in den Griff bekomme.
Vielen Dank, David
edit: Ich habe eben mal einen Snippet geschrieben, der vllt das Problem etwas besser beschreibt. Habe auch versucht die Größe einfach mal auf irgendeinen Wert zu ändern, wenn der Tree aufgeklappt wird, allerdings ohne Erfolg.
Java:
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class Snippet{
public static void main(String[] args){
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setSize(400,400);
shell.setLayout(new GridLayout(1,false));
final Tree tree = new Tree(shell,SWT.SINGLE | SWT.BORDER);
TreeItem item;
for(int i=1; i<=4 ; i++){
item = new TreeItem(tree, SWT.None);
item.setText("Kapitel "+i);
item = new TreeItem(item, SWT.None);
item.setText("Kapitel "+i+".1");
}
tree.addListener(SWT.Expand, new Listener(){
public void handleEvent(Event e){
tree.redraw(tree.getLocation().x, tree.getLocation().y, 200, 200, true);
tree.update();
}
});
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
display.dispose();
}
}
Zuletzt bearbeitet: