作者: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();
显示结果如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)