Bonjour.
Dans le cadre d'un projet j'apprends actuellement SWT. Je me suis beaucoup inspiré des snippets du site eclipse.org.
Pour le moment, j'ai construit une fenêtre avec deux champs texte et deux boutons :
Je rencontre cependant de gros problèmes avec cette fenêtre. En effet, si je passe le focus sur un autre programme et que je reviens dessus, l'affichage n'est pas rafraichi correctement, il faut que je bouge la souris pour que ça revienne.
Par ailleurs, quand je rentre un texte dans le premier champ, l'affichage du texte s'arrête au bout de quelques caractères et il faut une fois de plus que je bouge la souris pour que l'affichage soit correct.
Les snippets quand à eux n'ont pas ces problèmes, et j'ai testé ma fenêtre sur différentes machines, ce qui me fait penser que le problème vient de la manière dont je construis l'interface.
Afin de cerner au maximum le problème, j'ai recréé un petit projet à côté en limitant les champs et le nombre de classes. Je rencontre également le problème avec celui-ci.
Son code est le suivant :
Etant tout nouveau sur SWT, je me demandais si la structure que j'utilise, de par sa composition, pouvais entrainer des problèmes d'affichage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 /** * Creation date : 22 févr. 2010 */ package views; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import models.Model; import controls.Controller; /** * * */ public class GlobalView { /* * singleton stuff */ private static GlobalView instance; public static GlobalView getInstance(Model mdl, Controller ctrl) { if (instance == null) instance = new GlobalView(mdl, ctrl); return instance; } /*____________________________________________________*/ private Display display; private GlobalView(Model mdl, Controller ctrl) { display = new Display(); Shell shell = new Shell(display); shell.setLayout(new RowLayout()); Text txt = new Text(shell, SWT.NONE | SWT.BORDER); Button bouton = new Button(shell, SWT.NONE); shell.open(); while (!shell.isDisposed()) { if (display.readAndDispatch()) display.sleep(); } display.dispose(); } }
Manque-t-il un élément crucial?
Merci d'avance
Partager