[转]WorldWind开发中WorldWindowGLCanvas .setPreferredSize()函数找不到
值高温假期,无意翻到了csdn中三维GIS开发的专栏,讲的是worldwind Java三维GIS系统开发的东西,十分感兴趣。恰巧要求的环境已经存在,直接耍起来。将最新的Worldwind和JOGL下载回来,解压加载,然后测试Java和JOGL,一切都很顺利。然而,将第一个demo敲入package的时候,却发现WorldWindowGLCanvas中没有setPreferredSize()函数的实现。第一想法,demo太老了,可能是worldwind最新版把这个函数遗弃了,换了新的函数。但是,搜了一下最新的worldwind样例,发现仍有该函数的使用。Google一下,关于该函数无法找到的问题不只我一个,worldwind社区和stackoverflow论坛中也有不少提问,没有统一的解决办法,在论坛回复中可以看出大多数人是没遇到的。之后开始怀疑Linux之前是不是被我卸载东西搞坏了,又放到了windows系统环境下试了试,同样出现问题。晚饭过后,扒拉开worldwind api说明,发现是继承的javax.media.opengl.awt.GLCanvas里的问题。
出错原因:
JOGL的引用,我是按照官方jogamp.org下载的jogamp-all-platforms.7z来的。worldwind包里gluegen-rt.jar和jogl-all.jar与官方的jar不同。因此,问题就出这里了,将worldwind包里的这两个JOGL的文件拷贝,并引用到Eclipse工程的external_lib中即可,不用官方的最新版。
注意:
Linux 32位,需要以下四个:gluegen-rt.jar,gluegen-rt-natives-linux-i586.jar,jogl-all.jar,jogl-all-natives-linux-i586.jar
Linux 64位,需要以下四个:gluegen-rt.jar,gluegen-rt-natives-linux-amd64.jar,jogl-all.jar,jogl-all-natives-linux-amd64.jar
windows 32位,需要以下四个:gluegen-rt.jar,gluegen-rt-natives-windows-i586.jar,jogl-all.jar,jogl-all-natives-windows-i586.jar
windows 64位环境下,需要以下四个:gluegen-rt.jar,gluegen-rt-natives-windows-amd64.jar,jogl-all.jar,jogl-all-natives-windows-amd64.jar
Demo运行结果:

代码:
package gov.nasa.worldwind.study; import gov.nasa.worldwind.Model;
import gov.nasa.worldwind.WorldWind;
import gov.nasa.worldwind.avlist.AVKey;
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
import gov.nasa.worldwind.util.StatusBar;
import gov.nasa.worldwindx.examples.LayerPanel; import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame; public class extends JFrame
{
protected WorldWindowGLCanvas worldWindowGLCanvas;
protected StatusBar statusBar;
protected Model modelEarth;
protected LayerPanel layerPanel; public ()
{ Dimension canvasSize = new Dimension(850, 650);
this.worldWindowGLCanvas = new WorldWindowGLCanvas();
this.worldWindowGLCanvas.setPreferredSize(canvasSize); //创建Earth模型,并与画面绑定
modelEarth = (Model) WorldWind.createConfigurationComponent(AVKey.MODEL_CLASS_NAME);
this.worldWindowGLCanvas.setModel(modelEarth);
this.add(this.worldWindowGLCanvas, BorderLayout.CENTER); //增加状态栏
this.statusBar = new StatusBar();
this.add(statusBar, BorderLayout.PAGE_END);
this.statusBar.setEventSource(worldWindowGLCanvas); //显示图层面板
layerPanel = new LayerPanel(worldWindowGLCanvas);
this.add(layerPanel, BorderLayout.WEST);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setSize(canvasSize);
}
public static void main(String[] args)
{
String title = "系统";
AppDemo1 app = new AppDemo1();
app.setTitle( "WorldWindDemo"+":" + title);
app.setVisible(true);
}
}
原文链接:https://www.dazhuanlan.com/2019/10/17/5da7cbfb15f5a/
[转]WorldWind开发中WorldWindowGLCanvas .setPreferredSize()函数找不到的更多相关文章
- iOS开发中的数学函数
在iOS开发当中...我们往往会涉及到一些算法...为了节省一些时间...让APP很快地被开发出来...我们需要对各类函数有一定的了解...接下来...我把部分常用函数分享出来...希望能帮到大家.. ...
- Flutter开发中的几个常用函数
几个Flutter开发中的常用函数 /** 返回当前时间戳 */ static int currentTimeMillis() { return new DateTime.now().millisec ...
- [Dart] Flutter开发中的几个常用函数
几个Flutter开发中的常用函数 /** 返回当前时间戳 */ static int currentTimeMillis() { return new DateTime.now().millisec ...
- 开发常用的 Android 函数库
第三方函数库(译者注:包括第三方提供的 SDK,开源函数库)以惊人的方式助力着 Android 开发,借助这些其他开发人员辛勤工作的成果,我们开发起来更轻松和快捷.目前存在成千上万的函数库,如何选择正 ...
- 增加p()函数,方便开发中对变量打印调试
在开发的过程中,我们经常要输出一下变量看看得到的结果是什么,我们就要根据变量的类型选择使用echo,print_r或者var_dump,brophp框架中的p()函数会自动根据变量类型选择用什么方法为 ...
- iOS开发中常用的数学函数
iOS开发中常用的数学函数 /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(,)); //result 9 NSLog(,)); //result 27 //开平方 ...
- 网页开发中调用iframe中的函数或者是dom元素
iframe中的代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <hea ...
- 【VS开发】MFC中调用C函数模块的解决方案
[VS开发]MFC中调用C函数模块的解决方案 标签(空格分隔): [VS开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:最近调试基于MFC的程序 ...
- 【编程开发】 C与C++中的关于函数指针的强制类型转换与指针函数的关系
[编程开发] C与C++中的关于函数指针的强制类型转换与指针函数的关系 标签: [编程开发] [VS开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 以 ...
- 给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回
给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回 //统计字符串中出现的字符的出现次数 public function strNum(){ ...
随机推荐
- 云原生周刊:Kubernetes v1.27 发布 | 2023.4.17
开源项目推荐 Palaemon Palaemon 是一个开源开发工具,用于监控 Kubernetes 集群的健康状况和资源指标并分析内存不足 (OOMKill) 错误. Gitkube Gitkube ...
- Kubernetes 集群中 Ingress 故障的根因诊断
作者:scwang18,主要负责技术架构,在容器云方向颇有研究. 前言 KubeSphere 是青云开源的基于 Kubernetes 的云原生分布式操作系统,提供了比较炫酷的 Kubernetes 集 ...
- 马斯克对于CEO职能,发挥人才天赋,激励人才的想法
Time Interview with Elon Musk, 29 September 2011. Content 1 Have people do be focused on doing usefu ...
- GoLand IDE 如何设置每次打开时先展示启动界面
GoLand IDE 如何设置每次打开时先展示启动界面 打开设置,在SystemSeting下进行如下操作即可
- Power BI如何连接MySQL数据库
既然写了如何卸载MySQL connector net(相关文章见如何解决MySQL Connector NET xxxx无法卸载的问题(win10)),那就顺便再写一篇Power BI(以下简称PB ...
- 『玩转Streamlit』--图像与媒体组件
Streamlit中的图像与媒体组件,主要是st.image.st.audio和st.video. 它们是专为在Streamlit Web应用程序中嵌入和展示多媒体内容而设计的,这些组件不仅丰富了应用 ...
- Wgpu图文详解(03)缓冲区Buffer
在上一篇文章中,我们介绍了Wgpu中的渲染管线与着色器的概念以及基本用法.相信读者还记得,我们在渲染一个三角形的时候,使用了三角形的三个顶点的索引作为了顶点着色器的输入,并根据索引值计算了三个几何顶点 ...
- CF2027D The Endspeaker (Hard Version) 题解
题面 给你一个长度为 \(n\) 的数组 \(a\) 和一个长度为 \(m\) 的数组 \(b\) (所有 \(1 \le i < m\) 满足 \(b_i > b_{i+1}\) ).最 ...
- 《Django 5 By Example》阅读笔记:p651-p678
<Django 5 By Example>学习第9天,p651-p678总结,总计28页. 一.技术总结 1.aggregate() (1)aggregate:ad-("to&q ...
- Mysql分页实现及优化
通常,我们会采用ORDER BY LIMIT start, offset 的方式来进行分页查询.例如下面这个SQL: SELECT * FROM `t1` WHERE ftype=1 ORDER BY ...