Я разрабатываю настольное приложение на 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 можно увидеть здесь:
Спасибо заранее.