簡體   English   中英

在JavaFX項目中使用JxMaps

[英]Using JxMaps in JavaFX project

我正在使用JavaFX為GUI開發Java桌面應用程序。 該程序的一個重要部分包括一個我決定使用JxMaps的地圖,因為它是一個功能強大的框架,具有非常好的文檔,使其成為最佳選擇。

然而,問題是它被集成在Swing中,我認為這應該不是問題,因為我找到了這個例子中的代碼。 事實上,它編譯,但由於某種原因我得到“應用程序無響應”。 我假設它與此集成有關,因為當我在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);
                }
            }
        });
    }
}

最后一個是Github存儲庫中Map示例的精確副本。

最后,我可以在這里看到我的控制台中的確切輸出以及我在右鍵單擊Java應用程序時看到的內容:

控制台輸出+“應用程序無響應”

提前致謝。

來自JxMaps團隊的Vitaly來自這里。 目前JxMaps不支持JavaFX。 我們正在努力在下一個版本中實現JavaFX支持。 請通過電子郵件告訴我們,一旦有此功能的版本發布,我們會通知您。

另外兩個專門針對JavaFX的選項:

http://gluonhq.com/announcing-gluon-maps/

https://github.com/rterp/GMapsFX

我一直在使用Gluon Map組件進行內部項目,到目前為止它符合我們的要求。

我沒有用過GMapsFX。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM