[SWT] Problème avec des arbres

Résolu
sanchou Messages postés 9 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 12 avril 2007 - 26 mars 2007 à 20:38
sanchou Messages postés 9 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 12 avril 2007 - 27 mars 2007 à 10:30
Bonjour,


je viens de me mettre à SWT (et aux IHM en général) et j'ai déjà un petit soucis...

Je vous explique.


Je voudrais mettre en place 2 Tree l'un en dessous de l'autre.

Pour chaque Tree, j'insère un TreeItem auquel j'associe plusieurs TreeItem fils.

Jusque là pas de pb.


Sauf que quand je veux "expand" mes Tree, il n'y a pas de redimensionnement des différents GridLayout et GridData.

2 images en pièce jointe pour illlustrer cela.


Je pense que ce n'est pas très clair, donc je met le code source ci-dessous.
<hr size="2" width="100%" />

package perso.swt.test;
 
import org.eclipse.swt.events.TreeEvent;
import org.eclipse.swt.events.TreeListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
 
publicclass TestSWT1 {
 
 
privatestatic Composite comp = null;
 
 
publicstaticvoid main(String[] args){
Display display = new Display();
 
Shell shell = new Shell(display);
comp = new Composite(shell, SWT.NONE);
comp.setSize(320, 320);
Layout layout = new GridLayout();
comp.setLayout(layout);
comp.setBackground(new Color(display,255,255,255));
 
fill(comp);
comp.pack();
//shell.pack();
shell.open();
 
while(!shell.isDisposed())
if(!display.readAndDispatch())
display.sleep();
 
display.dispose();
 
}
 
privatestaticvoid fill(final Composite comp){
GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
final Tree tree = new Tree(comp, SWT.CHECK);
tree.setLayoutData(data);
tree.addTreeListener(new TreeListener(){
 
publicvoid treeCollapsed(TreeEvent arg0){
((GridData) tree.getLayoutData()).grabExcessVerticalSpace=false;
comp.pack();
}
 
publicvoid treeExpanded(TreeEvent arg0){
((GridData) tree.getLayoutData()).grabExcessVerticalSpace=true;
comp.pack();
}
});

TreeItem services = new TreeItem(tree,SWT.CHECK);
services.setText("services");
TreeItem it1 = new TreeItem(services,SWT.CHECK);
it1.setText("item 1");
TreeItem it2 = new TreeItem(services,SWT.CHECK);
it2.setText("item 2");
TreeItem it3 = new TreeItem(services,SWT.CHECK);
it3.setText("item 3");
TreeItem it4 = new TreeItem(services,SWT.CHECK);
it4.setText("item 4");
 

 
GridData data2 = new GridData(SWT.FILL, SWT.FILL, true, false);
final Tree tree2 = new Tree(comp, SWT.CHECK);
tree2.setLayoutData(data2);
tree2.addTreeListener(new TreeListener(){
 
publicvoid treeCollapsed(TreeEvent arg0){
((GridData) tree2.getLayoutData()).grabExcessVerticalSpace=false;
comp.pack();
}
 
publicvoid treeExpanded(TreeEvent arg0){
((GridData) tree2.getLayoutData()).grabExcessVerticalSpace=true;
comp.pack();
}
});
 
TreeItem contracts = new TreeItem(tree2,SWT.CHECK);
contracts.setText("contracts");
TreeItem it1C = new TreeItem(contracts,SWT.CHECK);
it1C.setText("item 1");
TreeItem it2C = new TreeItem(contracts,SWT.CHECK);
it2C.setText("item 2");
TreeItem it3C = new TreeItem(contracts,SWT.CHECK);
it3C.setText("item 3");
TreeItem it4C = new TreeItem(contracts,SWT.CHECK);
it4C.setText("item 4");
TreeItem it5C = new TreeItem(contracts,SWT.CHECK);
it5C.setText("item 5");
TreeItem it6C = new TreeItem(contracts,SWT.CHECK);
it6C.setText("item 6");
}
}

<hr size="2" width="100%" />
Voilà, si vous avez une idée pour moi, merci d'avance.


Nico

2 réponses

sanchou Messages postés 9 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 12 avril 2007
27 mars 2007 à 10:30
Bonjour, j'ai trouvé une solution satisfaisante ..

Je crée un Tree, puis deux TreeItem ayant pour papa le Tree.

Et pour chacun de ces TreeItem je leur file des TreeItem fils...

Et là çà marche!


Nico
3
sanchou Messages postés 9 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 12 avril 2007
26 mars 2007 à 20:50
Oups, je viens de me rendre compte que la mise en page est pas terrible..
Je reposte le code :
<hr size="2" width="100%" />

package perso.swt.test;
 
import org.eclipse.swt.events.TreeEvent;
import org.eclipse.swt.events.TreeListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.*;
 
public class TestSWT1 {
 
 
privatestatic Composite comp = null;
 
 
public static void main(String[] args){
Display display = new Display();
 
Shell shell = new Shell(display);
comp = new Composite(shell, SWT.NONE);
comp.setSize(320, 320);
Layout layout = new GridLayout();
comp.setLayout(layout);
comp.setBackground(new Color(display,255,255,255));
 
fill(comp);
comp.pack();
//shell.pack();
shell.open();
 
while(!shell.isDisposed())
if(!display.readAndDispatch())
display.sleep();
 
display.dispose();
 
}
 
private static void fill(final Composite comp){
GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
final Tree tree = new Tree(comp, SWT.CHECK);
tree.setLayoutData(data);
tree.addTreeListener(new TreeListener(){
 
public void treeCollapsed(TreeEvent arg0){
((GridData) tree.getLayoutData()).grabExcessVerticalSpace=false;
comp.pack();
}
 
public void treeExpanded(TreeEvent arg0){
((GridData) tree.getLayoutData()).grabExcessVerticalSpace=true;
comp.pack();
}
});

TreeItem services = new TreeItem(tree,SWT.CHECK);
services.setText("services");
TreeItem it1 = new TreeItem(services,SWT.CHECK);
it1.setText("item 1");
TreeItem it2 = new TreeItem(services,SWT.CHECK);
it2.setText("item 2");
TreeItem it3 = new TreeItem(services,SWT.CHECK);
it3.setText("item 3");
TreeItem it4 = new TreeItem(services,SWT.CHECK);
it4.setText("item 4");
 

 
GridData data2 = new GridData(SWT.FILL, SWT.FILL, true, false);
final Tree tree2 = new Tree(comp, SWT.CHECK);
tree2.setLayoutData(data2);
tree2.addTreeListener(new TreeListener(){
 
public void treeCollapsed(TreeEvent arg0){
((GridData) tree2.getLayoutData()).grabExcessVerticalSpace=false;
comp.pack();
}
 
public void treeExpanded(TreeEvent arg0){
((GridData) tree2.getLayoutData()).grabExcessVerticalSpace=true;
comp.pack();
}
});
 
TreeItem contracts = new TreeItem(tree2,SWT.CHECK);
contracts.setText("contracts");
TreeItem it1C = new TreeItem(contracts,SWT.CHECK);
it1C.setText("item 1");
TreeItem it2C = new TreeItem(contracts,SWT.CHECK);
it2C.setText("item 2");
TreeItem it3C = new TreeItem(contracts,SWT.CHECK);
it3C.setText("item 3");
TreeItem it4C = new TreeItem(contracts,SWT.CHECK);
it4C.setText("item 4");
TreeItem it5C = new TreeItem(contracts,SWT.CHECK);
it5C.setText("item 5");
TreeItem it6C = new TreeItem(contracts,SWT.CHECK);
it6C.setText("item 6");
}
}
0
Rejoignez-nous