Salut,
j'ai cherché sur internet mais je n'ai pas trouvé une réponse claire. Espérant la trouvée ici.
j'ai une application de type plugin qui ajoute un bouton dans un menu dans Eclipse. En cliquant sur ce bouton une fenêtre s'ouvre, voici le code de création de cette fenêtre:
"report" est un bouton permettant de lancer une autre fenêtre; la fenêtre de génération de rapport.
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 final Display display = PlatformUI.getWorkbench().getDisplay(); final Shell shell = new Shell(display, SWT.APPLICATION_MODAL | SWT.CLOSE | SWT.MAX | SWT.RESIZE); ... final Button report = new Button(composite, 0); report.setText("report"); report.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { Report.reportShell(shell); } }); ... while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } }
Report.reportShell(shell) est la méthode permettant la création de la fenêtre de génération du rapport.
Voici le code de la fenêtre de génération:
Cette dernière contient un bouton permettant la génération d'un rapport XML.Tout fonctionne bel et bien mais après la fermeture de la fenêtre de génération de rapport. une exception a été levée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public static final void reportShell(final Shell parent) { final Shell reportShell = new Shell(parent); ... reportShell.pack(); reportShell.open(); }
org.eclipse.swt.SWTException: Widget is disposed
...
La ligne qui pose le problème est : if (!display.readAndDispatch()) du boucle:
Est-ce quelqu'un peut m'aider concernant ce point?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } }
Merci d'avance![]()
Partager