OVH Cloud OVH Cloud

newbie swt : changement invisible

3 réponses
Avatar
LR
Salut,

J'ai le code ci-dessous qui me permet d'afficher un SashForm avec un champs
texte dans la partie inférieure et soit un champs texte soit une Table dans
la partie inférieure.

Ensuite, je peux faire

SashForm rightPane = new SashForm( splitPane, SWT.VERTICAL );
FillLayout layout = new FillLayout();
layout.type = SWT.VERTICAL;
rightPane.setLayout( layout );

Text rqt = new Text( rightPane, SWT.MULTI );
Text txtRes = new Text( rightPane, SWT.MULTI );
Text tbRes = new Table( rightPane, SWT.SINGLE ).setVisible( false );

Ensuite, je peux faire txtRes.setVisible( false ); tbRes.setVisible(
false );
Puis exécuter ce que je veux et, en fonction du résultat, afficher le text
ou la table avec :
tbRes.setVisible( true );

Le problème, c'est que le changement n'est visible que si je redimensionne
la fenêtre.

Comment faire un refresh ou update ou redraw ou je ne sais quoi pour valider
le changement à l'écran ?
Merci d'avance
Lilian

3 réponses

Avatar
Mat Free
dans <40cc6187$
Salut,

J'ai le code ci-dessous qui me permet d'afficher un SashForm avec un champs
texte dans la partie inférieure et soit un champs texte soit une Table dans
la partie inférieure.

Ensuite, je peux faire

SashForm rightPane = new SashForm( splitPane, SWT.VERTICAL );
FillLayout layout = new FillLayout();
layout.type = SWT.VERTICAL;
rightPane.setLayout( layout );

Text rqt = new Text( rightPane, SWT.MULTI );
Text txtRes = new Text( rightPane, SWT.MULTI );
Text tbRes = new Table( rightPane, SWT.SINGLE ).setVisible( false );

Ensuite, je peux faire txtRes.setVisible( false ); tbRes.setVisible(
false );
Puis exécuter ce que je veux et, en fonction du résultat, afficher le text
ou la table avec :
tbRes.setVisible( true );

Le problème, c'est que le changement n'est visible que si je redimensionne
la fenêtre.

Comment faire un refresh ou update ou redraw ou je ne sais quoi pour valider
le changement à l'écran ?
Merci d'avance
Lilian


Essaye un updateUI() sur la fenetre par exemple.

--
Mat

Avatar
LR
J'ai le code ci-dessous qui me permet d'afficher un SashForm avec un
champs


texte dans la partie inférieure et soit un champs texte soit une Table
dans


la partie inférieure.

Ensuite, je peux faire

SashForm rightPane = new SashForm( splitPane, SWT.VERTICAL );
FillLayout layout = new FillLayout();
layout.type = SWT.VERTICAL;
rightPane.setLayout( layout );

Text rqt = new Text( rightPane, SWT.MULTI );
Text txtRes = new Text( rightPane, SWT.MULTI );
Text tbRes = new Table( rightPane, SWT.SINGLE ).setVisible( false );

Ensuite, je peux faire txtRes.setVisible( false ); tbRes.setVisible(
false );
Puis exécuter ce que je veux et, en fonction du résultat, afficher le
text


ou la table avec :
tbRes.setVisible( true );

Le problème, c'est que le changement n'est visible que si je
redimensionne


la fenêtre.

Comment faire un refresh ou update ou redraw ou je ne sais quoi pour
valider


le changement à l'écran ?
Merci d'avance
Lilian


Essaye un updateUI() sur la fenetre par exemple.


Merci pour la réponse. Malheureusement, je ne trouve aucune méthode
updateUI(), ni dans Shell, ni dans Display. Il y a bien une méthode update()
mais elle ne semble pas avoir d'effet.

Je précise que si je redimensionne une seule fois le SashForm manuellement
en exécution, ensuite le comportement est celui attendu...

Toute aide supplémentaire serait bienvenue
Merci d'avance
Lilian


Avatar
LR
J'ai le code ci-dessous qui me permet d'afficher un SashForm avec un
champs

texte dans la partie inférieure et soit un champs texte soit une Table
dans

la partie inférieure.

Ensuite, je peux faire

SashForm rightPane = new SashForm( splitPane, SWT.VERTICAL );
FillLayout layout = new FillLayout();
layout.type = SWT.VERTICAL;
rightPane.setLayout( layout );

Text rqt = new Text( rightPane, SWT.MULTI );
Text txtRes = new Text( rightPane, SWT.MULTI );
Text tbRes = new Table( rightPane, SWT.SINGLE ).setVisible( false );

Ensuite, je peux faire txtRes.setVisible( false ); tbRes.setVisible(
false );
Puis exécuter ce que je veux et, en fonction du résultat, afficher le text
ou la table avec :
tbRes.setVisible( true );

Le problème, c'est que le changement n'est visible que si je redimensionne
la fenêtre.


J'ai trouvé, il faut faire rightPane.layout();

Lilian