Bonjour,
Je suis un nouveau dans le monde Java/GeoTools. J'aimerais pour l'instant avoir une fenêtre avec une barre de menu et lorsque je vais dans > Menu Fichier > Ajouter une couche, avoir une invite de navigation vers mon shape et qu'il s'affiche dans la fenêtre principale du programme.
Mon souci c'est que j'arrive bien à afficher un shapefile, mais il me l'affiche dans une nouvelle fenêtre JMapFrame (en suivant les instructions de cette page : http://docs.geotools.org/stable/user...uickstart.html)
Si je comprends bien il faudrait que je lui dise d'afficher mon shapefile dans mon JMapPane qui se trouve sur la fenêtre principale ??
Je joins mon code à ce message.
Si quelqu'un a une solution, je suis preneur avec joie !
Merci d'avance !
Paul
Le code :
P.S. : désolé pour la longueur du message...
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152 package HydrocalSpatial; import java.io.File; import java.io.IOException; import javax.swing.*; import java.awt.*; import java.awt.event.*; import org.geotools.data.FeatureSource; import org.geotools.data.FileDataStore; import org.geotools.data.FileDataStoreFinder; import org.geotools.map.DefaultMapContext; import org.geotools.map.DefaultMapLayer; import org.geotools.map.MapContext; import org.geotools.map.MapLayer; import org.geotools.swing.JMapFrame; import org.geotools.swing.JMapPane; import org.geotools.swing.data.JFileDataStoreChooser; class EckhardtSIG extends JFrame { //On définit un JMapPane qui recuillera nos couches private JMapPane mapPane = new JMapPane(); private MapContext mapContext; //Un constructeur de la classe EckhardtSIG public EckhardtSIG() { //On definit une fenêtre principale qu'on affiche directement en plein écran //et qu'on baptise "JHydrocal" JFrame fenPrincipale = new JFrame(); fenPrincipale.setExtendedState(MAXIMIZED_BOTH); fenPrincipale.setTitle("JHydrocal"); //On construit une barre de menu et une zone de carte fenPrincipale.setJMenuBar(buildMenu()); //fenPrincipale.getContentPane().add(BorderLayout.CENTER,buildMap()); //On place le JMapPane fond de carte mapPane.setVisible(true); mapPane.setBackground(Color.blue); this.getContentPane().add(BorderLayout.CENTER,mapPane); //On rend la fénêtre visible fenPrincipale.setVisible(true); } //Une classe de construction de la barre de menu, des menus et des items private JMenuBar buildMenu() { //Construction de la barre de menu JMenuBar JMenuBar menu = new JMenuBar(); //Construction des menus //Un menu "Fichier" JMenu mFichier = new JMenu("Fichier"); //Un menu "A propos" JMenu mAPropos = new JMenu("?"); //On ajoute le menu "Fichier" à la barre de menu menu.add(mFichier); //On ajoute le menu "?" à la barre de menu menu.add(mAPropos); //Construction des items du menu Fichier //Un item "Ajouter une couche vecteur" JMenuItem iAjoutVecteur = new JMenuItem("Ajouter une couche vecteur"); //Un item "Quitter" JMenuItem iQuitter = new JMenuItem("Quitter JHydrocal"); iAjoutVecteur.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ImportVecteur importVecteur = new ImportVecteur(mapContext); try { importVecteur.ouvreAfficheShp(); } catch(Exception exp) { } mapPane.setMapContext(mapContext); } }); //On associe l'action de quitter le programme lorsqu'on clique sur "Quitter" //via une classe anonyme iQuitter.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); //On ajoute ces deux items au menu Fichier mFichier.add(iAjoutVecteur); mFichier.add(iQuitter); //On retourne l'objet menu return menu; } } class ImportVecteur { MapContext mapContext; ImportVecteur(MapContext mapContext) { this.mapContext = mapContext; } public MapContext ouvreAfficheShp() throws Exception { File coucheVecteur = JFileDataStoreChooser.showOpenFile("shp", null); if (coucheVecteur == null) { return mapContext; } FileDataStore store = FileDataStoreFinder.getDataStore(coucheVecteur); FeatureSource featureSource = store.getFeatureSource(); mapContext = new DefaultMapContext(); mapContext.addLayer(featureSource, null); return mapContext; } } public class EckhardtSpatial { public static void main(String[] args) { EckhardtSIG eckhardtSIG = new EckhardtSIG(); System.out.println("OK"); } }
Partager