JavaFX中引用SuperMap iobjects Java打开一幅地图

JavaFX中引用SuperMap iobjects Java打开一幅地图,第1张

JavaFX中引用SuperMap iobjects Java打开一幅地图

作者:dongyx

说到Java可视化界面编程,可能大家想到的就是swing和JavaFX。由于SuperMap iobjects Java的控件接口是基于swing来写的,在swing界面设计上Java组件已经很好的能够支持了,那么Java组件能否也能支持JavaFX呢,下面小编来为大家介绍Java组件使用JavaFX打开一幅地图。

一、什么是JavaFX

JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计、创建、测试、调试和部署富客户端程序,并且和Java一样跨平台。

在JavaFX中要想显示一个控件就必须具备以下要素:
窗口          Stage

  -场景       Scene

    -布局     stackPane

      -控件   Button

二、创建一个空的JavaFX框架程序

package com.test;

import javafx.application.Application;
import javafx.stage.Stage;


public class Test extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

三、在JavaFX中引用Java组件的MapControl并显示一幅地图
工程地址:链接:https://pan.baidu.com/s/1vg404-RYMExDMYe3J5UqDw 
提取码:zz7x 
1.通过SwingNode实例化一个MapControl

MapControl mapControl=new MapControl();
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                Workspace workspace = new Workspace();
                WorkspaceConnectionInfo workspaceConnectionInfo = new
                        WorkspaceConnectionInfo();
                workspaceConnectionInfo.setType(WorkspaceType.SMWU);
                String file = "工作空间地址";
                workspaceConnectionInfo.setServer(file);
                workspace.open(workspaceConnectionInfo);
                mapControl.getMap().setWorkspace(workspace);
                mapControl.getMap().open(workspace.getMaps().get(0));
                mapControl.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.CROSSHAIR_CURSOR));
                swingNode.setContent(mapControl);
            }
        });

2.创建布局控件
StackPane pane = new StackPane();
3.将MapControl添加到布局中

AnchorPane anchorPane=new AnchorPane();
StackPane pane = new StackPane();
HBox hbox = new HBox();
Button zoomout = new Button("缩小");
pane.setPrefHeight(1024);
pane.setPrefWidth(2048);
pane.getChildren().add(swingNode);
hbox.getChildren().addAll(zoomin, zoomout);
anchorPane.getChildren().addAll(pane,hbox);
AnchorPane.setTopAnchor(pane, 50.0);

4.创建一个场景Scene
Scene scene = new Scene(anchorPane);

5.将场景Scene添加到窗口Stage中
stage.setScene(scene);
6.显示窗口
stage.show();
显示结果如下:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5673186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存