OVH Cloud OVH Cloud

fonctionnement swt

2 réponses
Avatar
LR
Salut (désolé le message est un peu long),

Je cherche à comprendre le fonctionnement de SWT. Je pense avoir plus ou
moins compris le fonctionnement de SWING : des conteneurs proposent des
méthode "add" qui permettent d'ajouter des contrôles. Ensuite, quand un
conteneur est dessiné (méthode paint je crois), il appelle les méthodes de
ses "enfants" qui leur permettent d'être dessiné à leur tour. Je trouve ce
fonctionnement très intuitif et je ne le retrouve pas du tout dans SWT.

Déjà, le fonctionnement semble être inversé. On n'ajoute pas la référence
d'un contrôle à un conteneur mais la référence d'un conteneur à un contrôle
(dans le constructeur). Du coup, je n'arrive pas à comprendre comment
l'"arborescence" est stockée. En SWING, on a une fenêtre qui dessine un
JPanel qui dessine ses propres JPanel qui dessinent leurs propres boutons et
contrôles divers. Un appel de la méthode paint de la fenêtre provoque donc
l'affichage de toute la chaîne.

Quel est l'équivalent en SWT ? Si je crée un Button sur un Composite, où est
stocké la référence du bouton ? Qui provoque son affichage sur l'écran ?
Comment puis-je supprimer ce bouton du Composite programmatiquement ? J'ai
bien regardé du coté de dispose() mais on dirait que l'opération n'est pas
immédiate...

J'ai cherché dans la doc mais c'est souvent en anglais et pas toujours très
digeste, si quelqu'un pouvait me décrire simplement (si possible) le
fonctionnement, ça pourrait m'aider à démarrer.

Les problèmes suivants ont participé à ma reflexion : comment supprimer une
TableColumn d'une Table ? Comment "switcher" deux contrôles qui doivent se
partager le même espace (un champs texte qui doit afficher un résultat sous
forme de texte et disparaître pour laisser une Table afficher un résultat
structuré) ?

Merci d'avance pour toute explication ou référence qui me permettrait
d'avancer
Lilian

2 réponses

Avatar
Christophe M
LR wrote:
Salut (désolé le message est un peu long),

Je cherche à comprendre le fonctionnement de SWT. Je pense avoir plus ou
moins compris le fonctionnement de SWING : des conteneurs proposent des
méthode "add" qui permettent d'ajouter des contrôles. Ensuite, quand un
conteneur est dessiné (méthode paint je crois), il appelle les méthodes de
ses "enfants" qui leur permettent d'être dessiné à leur tour. Je trouve ce
fonctionnement très intuitif et je ne le retrouve pas du tout dans SWT.

Déjà, le fonctionnement semble être inversé. On n'ajoute pas la référence
d'un contrôle à un conteneur mais la référence d'un conteneur à un contrôle
(dans le constructeur). Du coup, je n'arrive pas à comprendre comment
l'"arborescence" est stockée. En SWING, on a une fenêtre qui dessine un
JPanel qui dessine ses propres JPanel qui dessinent leurs propres boutons et
contrôles divers. Un appel de la méthode paint de la fenêtre provoque donc
l'affichage de toute la chaîne.

Quel est l'équivalent en SWT ? Si je crée un Button sur un Composite, où est
stocké la référence du bouton ? Qui provoque son affichage sur l'écran ?
Comment puis-je supprimer ce bouton du Composite programmatiquement ? J'ai
bien regardé du coté de dispose() mais on dirait que l'opération n'est pas
immédiate...

J'ai cherché dans la doc mais c'est souvent en anglais et pas toujours très
digeste, si quelqu'un pouvait me décrire simplement (si possible) le
fonctionnement, ça pourrait m'aider à démarrer.

Les problèmes suivants ont participé à ma reflexion : comment supprimer une
TableColumn d'une Table ? Comment "switcher" deux contrôles qui doivent se
partager le même espace (un champs texte qui doit afficher un résultat sous
forme de texte et disparaître pour laisser une Table afficher un résultat
structuré) ?

Merci d'avance pour toute explication ou référence qui me permettrait
d'avancer
Lilian




Salut,

Un début de piste :
http://eclipse.org/articles/Article-Writing%20Your%20Own%20Widget/Writing%20Your%20Own%20Widget.htm

Tu verras qu'ils font un appel à addPaintListener()
c'est l'événement déclenché par un composant pour dire à ceux que ça
intéresse qu'il se redessine. J'imagine qu'en interne, la classe mère
(Control) de tous les composants graphiques s'ajoute au conteneur reçu
en paramètre lors de la "contruction".

christophe

Avatar
Thomas Cornet

Salut (désolé le message est un peu long),

...


Les problèmes suivants ont participé à ma reflexion : comment supprimer une
TableColumn d'une Table ?


Y'a pas de méthode simple pour supprimer une colonne, mais il y a deux
solutions :

a) une plus complexe : tu supprime une par une toutes les colonnes de la
table (en partant de la fin) et tu ne recrée que celles qui sont
nécessaires

b) une moins propre : tu ne supprimes pas la colonne, mais tu lui met une
largeur nulle, typiquement setWidth(0) et setResizable(false)

Comment "switcher" deux contrôles qui doivent se
partager le même espace (un champs texte qui doit afficher un résultat sous
forme de texte et disparaître pour laisser une Table afficher un résultat
structuré) ?



Soit tu joues sur leur visibilité (un à false, l'autre à true et
vice-versa), soit tu peux les placer sur un composite utilisant un
StackLayout