Bonjour,
Je me sert de cette class pour visualiser une carte.
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
public class maps extends JApplet {
 
    private static final int JFXPANEL_WIDTH_INT = 800;
    private static final int JFXPANEL_HEIGHT_INT = 600;
    private static JFXPanel fxContainer;
    private JSplitPane spi;
    private JPanel pan;
    private boolean taille = false;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
 
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
                } catch (Exception e) {
                }
 
                JFrame frame = new JFrame("Carto");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
                JApplet applet = new maps();
                applet.init();
 
                frame.setContentPane(applet.getContentPane());
 
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
 
                applet.start();
            }
        });
    }
 
    @Override
    public void init() {
        fxContainer = new JFXPanel();
        fxContainer.setPreferredSize(new Dimension(JFXPANEL_WIDTH_INT, JFXPANEL_HEIGHT_INT));
         JButton btn = new JButton();
        pan = new JPanel();
        btn.setText("position");
        spi = new JSplitPane();
        //spi.setDividerLocation(0.8);
        spi.setDividerLocation(this.getWidth()-100);
        ActionListener printListener = new ActionListener() {
 
            @Override
            public void actionPerformed(java.awt.event.ActionEvent e) {
                System.out.println(spi.getDividerLocation()); //To change body of generated methods, choose Tools | Templates.
            }
        };
        PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
 
            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                 JSplitPane sourceSplitPane = (JSplitPane) evt.getSource();
                String propertyName = evt.getPropertyName();
 
                if (propertyName.equals(JSplitPane.LAST_DIVIDER_LOCATION_PROPERTY)) {
                    spi.setResizeWeight(0.85);
                    spi.resetToPreferredSizes();
                }else if (propertyName.equals(("dividerLocation"))){
 
 
            }
            }
 
        };
        spi.addPropertyChangeListener(propertyChangeListener);
        this.add(spi);
        spi.setLeftComponent(fxContainer);
        spi.setRightComponent(pan);
        btn.addActionListener(printListener);
       pan.add(btn);
        Platform.runLater(new Runnable() {
 
            @Override
            public void run() {
                createScene();
            }
        });
    }
 
    private void createScene() {
        initMap();
        initCommunication();
 
        StackPane root = new StackPane();
        root.getChildren().add(webView);
        setMarkerPosition(0,0);
        setMapCenter(0, 0);
        switchTerrain();
        //root.getChildren().add(btn);
        fxContainer.setScene(new Scene(root));
        taille = true;
 
    }
     private void initMap()
    {
        webView = new javafx.scene.web.WebView();
        webEngine = webView.getEngine();
        webEngine.load(getClass().getResource("map.html").toExternalForm());
        ready = false;
        webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>()
        {
            @Override
            public void changed(final ObservableValue<? extends Worker.State> observableValue,
                                final Worker.State oldState,
                                final Worker.State newState)
            {
                if (newState == Worker.State.SUCCEEDED)
                {
                    ready = true;
                }
            }
        });
    }
 
    private void initCommunication() {
        webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>()
        {
            @Override
            public void changed(final ObservableValue<? extends Worker.State> observableValue,
                                final Worker.State oldState,
                                final Worker.State newState)
            {
                if (newState == Worker.State.SUCCEEDED)
                {
                    doc = (JSObject) webEngine.executeScript("window");
                   doc.setMember("app",this);
                }
            }
        });
    }
     private void invokeJS(final String str) {
        if(ready) {
            doc.eval(str);
        }
        else {
            webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>()
            {
                @Override
                public void changed(final ObservableValue<? extends Worker.State> observableValue,
                                    final Worker.State oldState,
                                    final Worker.State newState)
                {
                    if (newState == Worker.State.SUCCEEDED)
                    {
                        doc.eval(str);
                    }
                }
            });
        }
    }
 
    public void setOnMapLatLngChanged(EventHandler<MapEvent> eventHandler) {
        onMapLatLngChanged = eventHandler;
    }
 
    public void handle(double lat, double lng) {
        if(onMapLatLngChanged != null) {
            MapEvent event = new MapEvent(this, lat, lng);
            onMapLatLngChanged.handle(event);
        }
    }
 
    public void setMarkerPosition(double lat, double lng) {
        String sLat = Double.toString(lat);
        String sLng = Double.toString(lng);
        invokeJS("setMarkerPosition(" + sLat + ", " + sLng + ")");
    }
    public void setadresse(String ad){
        invokeJS("codeAddress("+ ad + ")");
    }
    public void setMapCenter(double lat, double lng) {
        String sLat = Double.toString(lat);
        String sLng = Double.toString(lng);
        invokeJS("setMapCenter(" + sLat + ", " + sLng + ")");
    }
 
    public void switchSatellite() {
        invokeJS("switchSatellite()");
    }
 
    public void switchRoadmap() {
        invokeJS("switchRoadmap()");
    }
 
    public void switchHybrid() {
        invokeJS("switchHybrid()");
    }
 
    public void switchTerrain() {
        invokeJS("switchTerrain()");
    }
 
    public void startJumping() {
        invokeJS("startJumping()");
    }
 
    public void stopJumping() {
        invokeJS("stopJumping()");
    }
 
    public void setHeight(double h) {
        webView.setPrefHeight(h);
    }
 
    public void setWidth(double w) {
        webView.setPrefWidth(w);
    }
 
    public ReadOnlyDoubleProperty widthProperty() {
        return webView.widthProperty();
    }
     private JSObject doc;
    private EventHandler<MapEvent> onMapLatLngChanged;
    private javafx.scene.web.WebView webView;
    private WebEngine webEngine;
    private boolean ready;
}
J'utilise netbeans et quand je fais un "click droit" puis "run file" ma fenêtre s'ouvre et tout se passe bien.
Par contre quand depuis une autre class je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    private void Btn_CartoActionPerformed(java.awt.event.ActionEvent evt) {                                          
                maps mymap = new maps();
                mymap.show();
 
    }
il ne se passe rien, pas d'erreur pas de nouvelle fenêtre.
Si qq peut m'aider.
Merci