I have a freezing/disappearing JMap problem.
I'm using the Arcgis for java developers for developing GUI. My main frame is java-fx application - stage and scene. On my scene I have couple of java-fx components. One of them is a corner small window StackPane with a SwingNode on it. The SwingNode contains a panel, which contains a JMap. On JMap I have tiled map something.tpk.
The code is here:
<SPAN class="kwd" style="color: #00008b;">private</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">void</SPAN><SPAN class="pln" style="color: #181a1c;"> createAndSetSwingContent</SPAN><SPAN class="pun" style="color: #181a1c;">()</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="pun" style="color: #181a1c;">{</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="typ" style="color: #2b91af;">UtilManager</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">getInstance</SPAN><SPAN class="pun" style="color: #181a1c;">().</SPAN><SPAN class="pln" style="color: #181a1c;">runInEDT</SPAN><SPAN class="pun" style="color: #181a1c;">(()</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="pun" style="color: #181a1c;">-></SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="pun" style="color: #181a1c;">{</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="typ" style="color: #2b91af;">JPanel</SPAN><SPAN class="pln" style="color: #181a1c;"> mapPanel </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">JPanel</SPAN><SPAN class="pun" style="color: #181a1c;">();</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> mapPanel</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">setPreferredSize</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">Dimension</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="lit" style="color: #6b291b;">340</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="lit" style="color: #6b291b;">290</SPAN><SPAN class="pun" style="color: #181a1c;">));</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> map </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">MapManager</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">getInstance</SPAN><SPAN class="pun" style="color: #181a1c;">().</SPAN><SPAN class="pln" style="color: #181a1c;">createMap</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">mapPanel</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"> <BR /> map</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">addMapEventListener</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">MapEventListenerAdapter</SPAN><SPAN class="pun" style="color: #181a1c;">()</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="pun" style="color: #181a1c;">{</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="lit" style="color: #6b291b;">@Override</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="kwd" style="color: #00008b;">public</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">void</SPAN><SPAN class="pln" style="color: #181a1c;"> mapReady</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="typ" style="color: #2b91af;">MapEvent</SPAN><SPAN class="pln" style="color: #181a1c;"> event</SPAN><SPAN class="pun" style="color: #181a1c;">)</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="pun" style="color: #181a1c;">{</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> mapReady </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">true</SPAN><SPAN class="pun" style="color: #181a1c;">;</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> graphicHolder </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">GraphicalIDHolder</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">map</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"> <BR /> </SPAN><SPAN class="pun" style="color: #181a1c;">});</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> mapPanel</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">setVisible</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="kwd" style="color: #00008b;">true</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> setPanel</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">mapSwingNode</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> mapPanel</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="pun" style="color: #181a1c;">});</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /></SPAN><SPAN class="pun" style="color: #181a1c;">}</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /><BR /></SPAN><SPAN class="kwd" style="color: #00008b;">private</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">JMap</SPAN><SPAN class="pln" style="color: #181a1c;"> createMap</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="typ" style="color: #2b91af;">JPanel</SPAN><SPAN class="pln" style="color: #181a1c;"> panel</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">MapType</SPAN><SPAN class="pln" style="color: #181a1c;"> mapType</SPAN><SPAN class="pun" style="color: #181a1c;">)</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="pun" style="color: #181a1c;">{</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="typ" style="color: #2b91af;">JMap</SPAN><SPAN class="pln" style="color: #181a1c;"> map </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">JMap</SPAN><SPAN class="pun" style="color: #181a1c;">();</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> map</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">getLayers</SPAN><SPAN class="pun" style="color: #181a1c;">().</SPAN><SPAN class="pln" style="color: #181a1c;">clear</SPAN><SPAN class="pun" style="color: #181a1c;">();</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /><BR /> </SPAN><SPAN class="typ" style="color: #2b91af;">ArcGISLocalTiledLayer</SPAN><SPAN class="pln" style="color: #181a1c;"> tiledLayer </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">ArcGISLocalTiledLayer</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="str" style="color: #6b291b;">"c:/PRIMUS.tpk"</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"> <BR /><BR /> map</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">getLayers</SPAN><SPAN class="pun" style="color: #181a1c;">().</SPAN><SPAN class="pln" style="color: #181a1c;">add</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">tiledLayer</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> map</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">setExtent</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">Envelope</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="lit" style="color: #6b291b;">3883000</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="lit" style="color: #6b291b;">3777000</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="lit" style="color: #6b291b;">3884000</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="lit" style="color: #6b291b;">3778000</SPAN><SPAN class="pun" style="color: #181a1c;">));</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /><BR /> </SPAN><SPAN class="typ" style="color: #2b91af;">GraphicsLayer</SPAN><SPAN class="pln" style="color: #181a1c;"> graphicsLayer </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">GraphicsLayer</SPAN><SPAN class="pun" style="color: #181a1c;">();</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> map</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">getLayers</SPAN><SPAN class="pun" style="color: #181a1c;">().</SPAN><SPAN class="pln" style="color: #181a1c;">add</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">graphicsLayer</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /><BR /> </SPAN><SPAN class="com" style="color: #6a737c;">// adding fill picture above the map, below the other graphics</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="typ" style="color: #2b91af;">Envelope</SPAN><SPAN class="pln" style="color: #181a1c;"> env </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">Envelope</SPAN><SPAN class="pun" style="color: #181a1c;">(-</SPAN><SPAN class="lit" style="color: #6b291b;">20037508.3427892</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="pun" style="color: #181a1c;">-</SPAN><SPAN class="lit" style="color: #6b291b;">11070723.3593911</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="lit" style="color: #6b291b;">20037508.3427892</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="lit" style="color: #6b291b;">11070723.359391</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="typ" style="color: #2b91af;">SimpleFillSymbol</SPAN><SPAN class="pln" style="color: #181a1c;"> fill </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">SimpleFillSymbol</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">Color</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="lit" style="color: #6b291b;">0</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="lit" style="color: #6b291b;">20</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="lit" style="color: #6b291b;">41</SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="lit" style="color: #6b291b;">90</SPAN><SPAN class="pun" style="color: #181a1c;">));</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="typ" style="color: #2b91af;">Graphic</SPAN><SPAN class="pln" style="color: #181a1c;"> g </SPAN><SPAN class="pun" style="color: #181a1c;">=</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="kwd" style="color: #00008b;">new</SPAN><SPAN class="pln" style="color: #181a1c;"> </SPAN><SPAN class="typ" style="color: #2b91af;">Graphic</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">env </SPAN><SPAN class="pun" style="color: #181a1c;">,</SPAN><SPAN class="pln" style="color: #181a1c;"> fill</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="com" style="color: #6a737c;">//getFillSymbol());//fill);//</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> graphicsLayer</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">addGraphic</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">g</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /><BR /> map</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">setPreferredSize</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">panel</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">getPreferredSize</SPAN><SPAN class="pun" style="color: #181a1c;">());</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> map</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">setMaximumSize</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">panel</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">getMaximumSize</SPAN><SPAN class="pun" style="color: #181a1c;">());</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> panel</SPAN><SPAN class="pun" style="color: #181a1c;">.</SPAN><SPAN class="pln" style="color: #181a1c;">add</SPAN><SPAN class="pun" style="color: #181a1c;">(</SPAN><SPAN class="pln" style="color: #181a1c;">map</SPAN><SPAN class="pun" style="color: #181a1c;">);</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /> </SPAN><SPAN class="kwd" style="color: #00008b;">return</SPAN><SPAN class="pln" style="color: #181a1c;"> map</SPAN><SPAN class="pun" style="color: #181a1c;">;</SPAN><SPAN class="pln" style="color: #181a1c;"><BR /></SPAN><SPAN class="pun" style="color: #181a1c;">}</SPAN>
My problem is: After some time, the map disappears and some random junk showed there. When I touch this small window, the map reappears. Sometimes it also freezes for a while.
This is really bad looking, and I need to fix it. Is this a known problem? Should I refresh/repaint my map from time to time? If so, how can I do it?
Really appreciate your help,
Thanks,
Aviv.