Je fais une fenêtre en SWT, voivi mon code:

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
51
52
 
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.widgets.*;
//import org.eclipse.swt.graphics.*;
 
public class Essai 
{
	public static void main(String[] args) 
	{
		Display display = new Display ();
		Shell shell = new Shell (display);
		shell.setSize(500,500);
 
		//Création de la barre de menu
		Menu barre = new Menu(shell, SWT.BAR);
		//On associe la barre de menu a la fenêtre
		shell.setMenuBar(barre);
		//Création d'un menu de la barre de menus
		MenuItem file = new MenuItem(barre, SWT.CASCADE);
		file.setText("Fichier");
 
		Menu fileMenu = new Menu(shell, SWT.DROP_DOWN);
		MenuItem action1 = new MenuItem(fileMenu, SWT.PUSH);
		MenuItem action2 = new MenuItem(fileMenu, SWT.PUSH);
		file.setMenu(fileMenu);
		action1.setText("Charger");
		action2.setText("Sauver");
 
		action1.addSelectionListener(new SelectionAdapter() 
		{
			public void widgetSelected(SelectionEvent e) 
			{
				[color=red]DirectoryDialog directoryDialog = new DirectoryDialog(shell);[/color]
				directoryDialog.setText("Ouvrir une simulation");
				directoryDialog.setFilterPath("C:/Program Files");
				String selectedDirectory = directoryDialog.open();
				System.out.println("Directory Selected:" + selectedDirectory);
			}
		});
 
 
 
		shell.open ();
		while (!shell.isDisposed ()) 
		{
			if (!display.readAndDispatch ()) 
				display.sleep();
		}	
		display.dispose ();
	}
}
Il faut que quand je clique sur "Charger" donc action1, une arborescence apparaisse..

Dans la fonction WidgetSelected", il arrive pas a accéder à "shell"

Il me dit: " Impossible de faire référence à une variable non finale shell d'une classe définie dans une méthode différente"



Merci