http://blog.csdn.net/giser_whu/article/details/40920315

先来看下本篇博客索要达到的效果:

找到源码下的gov.nasa.worldwind.util下的StatusBar.java文件,可以看到状态栏显示的信息主要包括视点高度以及对应空间点三维坐标以及是否使用网络等信息。在后续的开发中采用离线模式,因此不需要联网,也不显示网络状态信息。代码依次如下面几幅图所示:

修改完源代码后,将源代码文件导出为jar包,在我们的工程下引用即可。后面如果需要修改源代码,都按这种方式操作;具体操作步骤如下:

需要说明的是导出的时候可以只勾选src文件夹也可以默认。导出后将worldWind2.0.jar文件拷贝到我们的工程目录下,添加应用即可。下面是所有源码:

  1. package cn.whu.vge;
  2. import gov.nasa.worldwind.Model;
  3. import gov.nasa.worldwind.WorldWind;
  4. import gov.nasa.worldwind.WorldWindow;
  5. import gov.nasa.worldwind.avlist.AVKey;
  6. import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
  7. import gov.nasa.worldwind.util.StatusBar;
  8. import java.awt.Dimension;
  9. import java.awt.EventQueue;
  10. import java.awt.Toolkit;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.JButton;
  13. import javax.swing.JFrame;
  14. import javax.swing.JMenu;
  15. import javax.swing.JMenuBar;
  16. import javax.swing.JPanel;
  17. import javax.swing.JToolBar;
  18. /**
  19. * @author Administrator
  20. *
  21. */
  22. public class GFScope
  23. {
  24. private JFrame GFScopeMainFrame; // 主窗体
  25. private WorldWindowGLCanvas worldWindowGLCanvas; // 声明WWJ画布
  26. private JPanel WorldWindPanel;  //三维视图面板
  27. private JPanel Layerpanel;      //图层管理面板
  28. private JPanel StatusBarpanel;  //状态栏面板
  29. private StatusBar statusBar;    //状态栏
  30. //  private WorldWindow wwd;
  31. /**
  32. * Launch the application.
  33. */
  34. public static void main(String[] args)
  35. {
  36. EventQueue.invokeLater(new Runnable()
  37. {
  38. public void run()
  39. {
  40. try
  41. {
  42. GFScope window = new GFScope();
  43. window.GFScopeMainFrame.setVisible(true);
  44. window.GFScopeMainFrame.setTitle("XXXXX子系统");
  45. WorldWind.setOfflineMode(true); // 设置离线运行模式
  46. }
  47. catch (Exception e)
  48. {
  49. e.printStackTrace();
  50. }
  51. }
  52. });
  53. }
  54. /**
  55. * Create the application.
  56. */
  57. public GFScope()
  58. {
  59. initialize();
  60. InitializeEarth(WorldWindPanel,StatusBarpanel);
  61. }
  62. /**
  63. * Initialize the contents of the frame.
  64. */
  65. /**
  66. *
  67. */
  68. private void initialize()
  69. {
  70. // 主窗体
  71. GFScopeMainFrame = new JFrame();
  72. GFScopeMainFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(
  73. GFScope.class.getResource("/images/32x32-icon-earth.png")));
  74. GFScopeMainFrame.setBounds(100, 100, 1000, 800);
  75. GFScopeMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  76. GFScopeMainFrame.getContentPane().setLayout(null);
  77. /**
  78. * 菜单项
  79. */
  80. JMenuBar menuBar = new JMenuBar();
  81. menuBar.setBounds(0, 0, 984, 30);
  82. GFScopeMainFrame.getContentPane().add(menuBar);
  83. JMenu mnf = new JMenu("\u6587\u4EF6(F)");
  84. menuBar.add(mnf);
  85. JMenu mnv = new JMenu("\u89C6\u56FE(V)");
  86. menuBar.add(mnv);
  87. JMenu mnNewMenu = new JMenu("\u5DE5\u5177(T)");
  88. menuBar.add(mnNewMenu);
  89. JMenu mnNewMenu_1 = new JMenu("\u5206\u6790(A)");
  90. menuBar.add(mnNewMenu_1);
  91. JMenu mnh = new JMenu("\u5E2E\u52A9(H)");
  92. menuBar.add(mnh);
  93. /**
  94. * 工具条
  95. */
  96. JToolBar toolBar = new JToolBar();
  97. toolBar.setBounds(0, 28, 984, 30);
  98. GFScopeMainFrame.getContentPane().add(toolBar);
  99. JButton btnNewButton = new JButton("");
  100. btnNewButton.setIcon(new ImageIcon(GFScope.class
  101. .getResource("/newt/data/cross-grey-alpha-16x16.png")));
  102. toolBar.add(btnNewButton);
  103. /**
  104. * 面板(图层面板、三维视图面板)
  105. *
  106. * @author
  107. */
  108. Layerpanel = new JPanel();
  109. Layerpanel.setBounds(0, 60, 194, 702);
  110. GFScopeMainFrame.getContentPane().add(Layerpanel);
  111. WorldWindPanel = new JPanel();
  112. WorldWindPanel.setBounds(194, 60, 790, 673);
  113. GFScopeMainFrame.getContentPane().add(WorldWindPanel);
  114. StatusBarpanel = new JPanel();
  115. StatusBarpanel.setBounds(194, 732, 790, 30);
  116. GFScopeMainFrame.getContentPane().add(StatusBarpanel);
  117. }
  118. private void InitializeEarth(JPanel panel1,JPanel panel2)
  119. {
  120. // 按指定尺寸创建画布
  121. Dimension canvasSize = new Dimension(790, 688);
  122. this.worldWindowGLCanvas = new WorldWindowGLCanvas();
  123. this.worldWindowGLCanvas.setPreferredSize(canvasSize);
  124. // 创建Earth模型,并与画布绑定
  125. Model model = (Model) WorldWind
  126. .createConfigurationComponent(AVKey.MODEL_CLASS_NAME);
  127. this.worldWindowGLCanvas.setModel(model);
  128. panel1.add(worldWindowGLCanvas);
  129. /**
  130. *初始化状态栏信息
  131. * */
  132. this.statusBar=new StatusBar();
  133. this.statusBar.setEventSource(worldWindowGLCanvas);
  134. panel2.add(statusBar);
  135. }
  136. }

欢迎大家留言交流!

World Wind Java开发之三 显示状态栏信息(转)的更多相关文章

  1. World Wind Java开发之三 显示状态栏信息

    先来看下本篇博客索要达到的效果: 找到源代码下的gov.nasa.worldwind.util下的StatusBar.java文件,能够看到状态栏显示的信息主要包含视点高度以及相应空间点三维坐标以及是 ...

  2. World Wind Java开发之一(转)

    http://blog.csdn.net/giser_whu/article/details/40477235 参照<World wind Java三维地理信息系统开发指南随书光盘>以及官 ...

  3. [转]World Wind Java开发之四——搭建本地WMS服务器

    在提供地理信息系统客户端时,NASA还为用户提供了开源的WMS Server 服务器应用:World Wind WMS Server.利用这个应用,我们可以架设自己的WMS服务并使用自己的数据(也支持 ...

  4. World Wind Java开发之六——解析shape文件(转)

    http://blog.csdn.net/giser_whu/article/details/41647117 最近一直忙于导师项目的事情了,几天没更新了,昨天和今天研究了下WWJ解析shp文件的源代 ...

  5. SpringBoot开发十一-显示登录信息

    需求介绍-显示登录信息 我们需要在每个页面的头部都要把登录用户的头像显示出来,另外在详细信息里面你需要显示用户的名字,除此之外如果登录了,我们显示首页 信息 头像 三个功能的链接,否则显示首页 登录两 ...

  6. World Wind Java开发之八——加载本地缓存文件构建大范围三维场景(

    http://blog.csdn.net/giser_whu/article/details/42044599 上一篇博客主要是针对小文件直接导入WW中显示,然而当文件特别大时,这种方式就不太可行.因 ...

  7. [转]World Wind Java开发之五——读取本地shp文件

    World Wind Java 使用IconLayer图层类表现点和多点数据,使用RenderableLayer图层表现线和面数据,一个图层只能对应一组shape文件.World Wind Java首 ...

  8. World Wind Java开发之五——读取本地shp文件(转)

    http://blog.csdn.net/giser_whu/article/details/41484433 World Wind Java 使用IconLayer图层类表现点和多点数据,使用Ren ...

  9. World Wind Java开发之十一——加载热点信息(仿Google Earth)(转)

    在GE的图层中有一个照片图层,在浏览时可以看到各地的一些图片,我们称之为热点信息,如下图所示: 再来看下本文的实现效果: 效果是不是很像呢,其实实现这个很简单,参照examples中的Balloons ...

随机推荐

  1. Educational Codeforces Round 57 (Rated for Div. 2)D(动态规划)

    #include<bits/stdc++.h>using namespace std;char s[100007];long long a[100007];long long dp[100 ...

  2. go培训课程都学什么?xorm框架学习系列(二):xorm结构体映射规则和表操作

    上节内容我们学习了基本的xorm框架的知识和基础配置的相关信息.本节课内容我们继续学习相关的知识和相关操作. 名称映射规则 名称映射规则主要负责结构体名称到表名和结构体field到表字段的名称映射. ...

  3. layui的tree和form并没有冲突!无限级tree下拉列表和select下拉列表同一页使用!

    在昨天写的随笔中: layui的tree和form同时引用出现冲突的粗略解决办法 https://www.cnblogs.com/xwma/p/10900975.html 提出有冲突,今天在开发中发现 ...

  4. JMETER断言:终极指南

    你想要: 检查服务器响应是否包含特定字符串, 或验证服务器返回了HTTP 200 OK, 或者检查json字段的值(使用类似JsonPath$.store..price). 断言是要走的路. 问题是: ...

  5. 默认约束 default

    default :初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予默认值.  例子:create table tb6(   id int primary key auto_increment ...

  6. Maven的作用到底是什么

    1 . 帮你下载jar包 maven项目会有一个 pom.xml文件, 在这个文件里面,只要你添加相应配置,他就会自动帮你下载相应jar包,不用你铺天盖地的到处搜索你需要的jar包了 下面是示范配置文 ...

  7. Appium + Python自动化3 - 输入中文

    在做app自动化过程中会踩很多坑,咱们都是用中文的app,所以首先要解决中文输入的问题!本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题. 一.定位搜索 1.打开淘宝点击搜索按钮,进入搜索页 ...

  8. Java多线程与并发——线程生命周期和线程池

    线程生命周期:  线程池:是预先创建线程的一种技术.线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中,然后对这些资源进行复用.减少频繁的创建和销毁对象. java里面线程池的顶级接口是E ...

  9. (转)Linux 命令(40): wc 命令

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 原文:http://blog.jobbole.com/109925/ http:/ ...

  10. 【Unity3D】Unity中用C#读取CSV文件

    1.创建csv文件 既然做实验嘛,没有资源怎么行,自己徒手写个csv文件吧,打开Numbers工具,新建一个表格文件,我的文件编辑截图如下: 创建完成后,导出成csv格式,我这里文件名为test.cs ...