3

GUIにJavaFXを使用して、Javaでデスクトップアプリケーションを開発しています。プログラムの重要な部分はマップで構成されており、 JxMapsを使用することに決めました。JxMapsは非常に優れたドキュメントを備えた強力なフレームワークであり、最良の選択肢でした。

ただし、問題は Swing に統合されていることです。これは、この例のコードを見つけたので、問題にはならないと思いました。実際、コンパイルはできますが、何らかの理由で "Application Not Responding" が表示されます。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 アプリを右クリックしたときに表示される内容を以下に示します。

コンソール出力 +

前もって感謝します。

4

2 に答える 2

1

JxMaps チームの Vitaly です。現在、JxMaps は JavaFX をサポートしていません。次のバージョンのいずれかで JavaFX サポートの実装に取り​​組んでいます。この機能を備えたバージョンがリリースされたら、メールでお知らせください。

于 2016-06-29T18:29:08.317 に答える