Dans mon cas, j'ai deux enfants d'un SashForm
, mais la question s'applique à tous Composite
s.Modification de l'ordre des enfants d'un composite SWT
class MainWindow {
Sashform sashform;
Tree child1 = null;
Table child2 = null;
MainWindow(Shell shell) {
sashform = new SashForm(shell, SWT.NONE);
}
// Not called from constructor because it needs data not available at that time
void CreateFirstChild() {
...
Tree child1 = new Tree(sashform, SWT.NONE);
}
void CreateSecondChild() {
...
Table child2 = new Table(sashform, SWT.NONE);
}
}
Je ne sais pas à l'avance dans quel ordre ces méthodes seront appelées. Comment puis-je m'assurer que child1
est placé sur la gauche, et child2
sur la droite? Alternativement, est-il un moyen de changer leur ordre en tant qu'enfants de sashform
après ils sont créés?
Actuellement ma meilleure idée est de mettre en placeholders comme ceci:
class MainWindow {
Sashform sashform;
private Composite placeholder1;
private Composite placeholder2;
Tree child1 = null;
Table child2 = null;
MainWindow(Shell shell) {
sashform = new SashForm(shell, SWT.NONE);
placeholder1 = new Composite(sashform, SWT.NONE);
placeholder2 = new Composite(sashform, SWT.NONE);
}
void CreateFirstChild() {
...
Tree child1 = new Tree(placeholder1, SWT.NONE);
}
void CreateSecondChild() {
...
Table child2 = new Table(placeholder2, SWT.NONE);
}
}
C'est le cas. J'ai juste raté l'existence de 'moveAbove' parce que je regardais parmi les méthodes de' Composite'. –
Merci pour cette info :) Une bonne chose à noter est que vous pouvez utiliser null pour le déplacer vers le haut. –