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. 清北刷题冲刺 10-29 a.m

    遭遇 /* 因为选的楼是个集合,与顺序无关 而且总花费=c[1]+c[2]+c[3]+|h[1]-h[2]|+|h[2]-h[3]| 我们规定走的顺序从高到低,那么绝对值就可以去掉 所以就可以约掉中间 ...

  2. ios开发 xcode6以上安装Alcatraz管理插件

    在终端上输入如下命令即可完成安装: curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh |  ...

  3. 模型事件注意点,before_delete、after_delete、before_write、after_write、before_update、after_update、before_insert、after_insert

    模型类支持before_delete.after_delete.before_write.after_write.before_update.after_update.before_insert.af ...

  4. Shell面试,笔试整理

    1.经典Shell脚本面试问题:https://blog.csdn.net/hyszyl/article/details/60970307

  5. element input搜索框探索

    转(https://blog.csdn.net/qq_37746973/article/details/78402812) 在script中添加下面两个函数 //queryString 为在框中输入的 ...

  6. HTTP(一)概述

    总是觉得HTTP的学习不过就是几页的学习内容罢了,于是就总是没有好好的去学. 我发现我们更愿意通过实例来了解一个东西,不过这里还是添加一下概括的过程吧~ 一个不想看就跳过的概括:输入一个 URL,发生 ...

  7. django 请求生命周期

    详细例子:

  8. mysql事务锁表

    -- 查看被锁住的SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 等待锁定SELECT * FROM INFORMATION_SCHEMA.INNO ...

  9. 解决gap 采用increapment scn 方式 操作。

    ###########1 1.查看备库的scn ⚠️如果控制文件,数据文件,数据文件头部的scn不一致,需要根据日志中的gap的起始sequence# 找到对应的scn col  current_sc ...

  10. D. Vitya and Strange Lesson

    http://codeforces.com/contest/842/problem/D 1.整体的数组是不用变的,比如数组a[]经过一次询问x后,然后再询问y,相当于询问x ^ y ^ a[i]后的m ...