
作者: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条)