2016-06-25 2 views
3

Я разрабатываю настольное приложение на Java с использованием JavaFX для графического интерфейса. Важная часть программы состоит из карты, для которой я решил использовать JxMaps, поскольку она была мощной структурой с очень хорошей документацией, что сделало ее наилучшим вариантом.Использование JxMaps в проекте JavaFX

Однако проблема заключается в том, что он интегрирован в 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 можно увидеть здесь:

Console output + "Application not Responding"

Спасибо заранее.

ответ

1

Виталий из команды JxMaps здесь. На данный момент JxMaps не поддерживает JavaFX. Мы работаем над реализацией поддержки JavaFX в одной из следующих версий. Оставьте нам строку по электронной почте, и мы сообщим вам, как только версия с этой функцией отключена.