我正在使用JavaFX为GUI开发Java应用程序。该计划的一个重要部分包括我决定使用JxMaps的地图,因为它是一个功能强大的框架,文档非常好,使其成为最佳选择。
然而,问题是它被集成在Swing中,我认为这应该不是问题,因为我找到了来自this example的代码。事实上,它编译,但由于某种原因我得到“应用程序无响应”。我假设它与此集成有关,因为当我在JavaFX应用程序之外运行它时,地图可以正常工作。
我当前的程序看起来完全像这样:
Main.java
import javafx.application.Application;
import javafx.embed.swing.SwingNode;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javax.swing.*;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
final SwingNode swingNode = new SwingNode();
createMap(swingNode);
StackPane pane = new StackPane();
pane.getChildren().add(swingNode);
primaryStage.setTitle("Fields Map");
primaryStage.setScene(new Scene(pane, 700, 500));
primaryStage.show();
}
private void createMap(final SwingNode swingNode) {
final FieldsMap mapView = new FieldsMap();
SwingUtilities.invokeLater(() -> swingNode.setContent(mapView));
}
}
FieldsMap.java
import com.teamdev.jxmaps.*;
import com.teamdev.jxmaps.swing.MapView;
public class FieldsMap extends MapView {
public FieldsMap() {
setOnMapReadyHandler(new MapReadyHandler() {
@Override
public void onMapReady(MapStatus status) {
// Check if the map is loaded correctly
if (status == MapStatus.MAP_STATUS_OK) {
// Getting the associated map object
final Map map = getMap();
// Creating a map options object
MapOptions options = new MapOptions(map);
// Creating a map type control options object
MapTypeControlOptions controlOptions = new MapTypeControlOptions(map);
// Changing position of the map type control
controlOptions.setPosition(ControlPosition.TOP_RIGHT);
// Setting map type control options
options.setMapTypeControlOptions(controlOptions);
// Setting map options
map.setOptions(options);
// Setting the map center
map.setCenter(new LatLng(map, 35.91466, 10.312499));
// Setting initial zoom value
map.setZoom(2.0);
}
}
});
}
}
最后一个是Map example in their Github repository的精确副本。
最后,我可以在这里看到我的控制台中的确切输出以及我在右键单击java应用程序时看到的内容:
提前致谢。
答案 0 :(得分:1)
来自JxMaps团队的Vitaly。目前JxMaps不支持JavaFX。我们正在努力在下一个版本中实现JavaFX支持。通过电子邮件给我们留言,我们会在有此功能的版本发布后通知您。
答案 1 :(得分:-1)
专门针对JavaFX的另外两个选项:
http://gluonhq.com/announcing-gluon-maps/
https://github.com/rterp/GMapsFX
我一直在使用Gluon Map组件进行内部项目,到目前为止它符合我们的要求。
我还没有使用过GMapsFX。