㈠ OpenGL主要是做游戏,但是有3D游戏引擎用他干嘛而且3D的程序几乎都没有做的,那学他有什么用处
你没有搞清楚 gl 和 游戏, 引擎 之间的关系.
他们之间的层次是:
游戏逻辑代码-->游戏引擎-->3D引擎-->opengl/DX --> 显卡
游戏公司一般雇佣很多程序员来写游戏代码.这种代码现在一般都是用java,c#,lua 这类高级语言写的. 然后他们写的这些代码,会被塞到 游戏引擎里. 然后游戏肯定是需要复杂的图像来展现的对吧? 所以 游戏引擎里会有一部分代码来和opengl 交互. 告诉opengl我要画什么.
最后opengl把游戏资源(3d模型,图片 ,等)送入显卡,进行绘制.
所以 opengl是很底层的东西.一本没人需要学他.
㈡ java opengl
java opengl是什么,让我们一起了解一下?
opengl是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。
opengl有什么作用?
1、OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。
2、OpenGL规范描述了绘制2D和3D图形的抽象API。尽管这些API可以完全通过软件实现,但它是为大部分或者全部使用硬件加速而设计的。
3、OpenGL的API定义了若干可被客户端程序调用的函数,以及一些具名整型常量(例如,常量GL_TEXTURE_2D对应的十进制整数为3553)。虽然这些函数的定义表面上类似于C编程语言,但它们是语言独立的。因此,OpenGL有许多语言绑定,值得一提的包括:JavaScript绑定的WebGL(基于OpenGL ES 2.0在Web浏览器中的进行3D渲染的API);C绑定的WGL、GLX和CGL;iOS提供的C绑定;android提供的Java和C绑定。
4、OpenGL不仅语言无关,而且平台无关。规范只字未提获得和管理OpenGL上下文相关的内容,而是将这些作为细节交给底层的窗口系统。出于同样的原因,OpenGL纯粹专注于渲染,而不提供输入、音频以及窗口相关的API。
实战案例,具体代码如下: package net.obviam.opengl; import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundle; import android.view.Window; import android.view.WindowManager; public class Run extends Activity {undefined /** The OpenGL view */ private GLSurfaceView glSurfaceView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) {undefined super.onCreate(savedInstanceState); // requesting to turn the title OFF requestWindowFeature(Window.FEATURE_NO_TITLE); // making it full screen getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); // Initiate the Open GL view and // create an instance with this activity glSurfaceView = new GLSurfaceView(this); // set our renderer to be the main renderer with // the current activity context glSurfaceView.setRenderer(new GlRenderer()); setContentView(glSurfaceView); } /** Remember to resume the glSurface */ @Override protected void onResume() {undefined super.onResume(); glSurfaceView.onResume(); } /** Also pause the glSurface */ @Override protected void onPause() {undefined super.onPause(); glSurfaceView.onPause(); } }
㈢ 怎么在opengl中显示汉字 ,我用的是java, opengl的绑定是gl4java
java的opengl没试过,不过你可以找找有没有类似功能的接口,
linux:glXUseXFont
apple:aglUseFont
windows:wglUseFontBitmaps
wglUseFontOutlines
㈣ java中如何调用OpenGL
OpenGLTM for JavaTM maps the complete OpenGL 1.2 API and the complete GLU 1.2 API to Java
and implements all window handle functions (native and java),
while using the Java-Native-Interface (JNI) of Java and/or the JDirect-Interface of MS-JVM !
http://gl4java.sourceforge.net/
试试看这个吧
㈤ 基于OPENGL的3D游戏的开发用什么语言比较好啊,java可以么
那就看你面向什么平台了
一般来说,桌面或掌上设备的OpenGL还是用类C语言来开发。
java也可以,现在已经有OpenGL
for
JAVA的JDK了,你可以找找,祝学习顺利。
㈥ OpenGL 跟java C# 或是其他的C 语言有什么本质上的不同吗
OpenGL不是编程语言,和微软的DirectX是两大主流的三维图形渲染接口。由一系列.dll,.lib和.h文件组成。编程的时候,用到.h里面的函数。那里面有很多绘制函数和状体控制函数。
它是由C编写的,完全可以融合到C++程序中。
java,C#,C是语言,就像中文、英文和法语,Opengl就像用中文写的孙子兵法。
㈦ java如何调用OPENGL
为什么要用java跑ogl?我的理由是platform independence,你呢?或许你是JAVA高手?或许需要JAVA其他的优越之处?不管怎么样,你既然进来了,相必已经有了一个不错的理由了吧?
㈧ 在Java中如何将OpenGL绘制的3D图形转换为一幅2D的图像,并可以打印
我感觉这个是唯一能帮上你的忙!
JOGL 是 JAVA Bindings for OpenGL 的缩写,它允许用户通过API在JAVA中调用OpenGL函数,从而在JAVA中也能写出硬件支持的3D程序。
对于熟悉OpenGL的用户,Jogl非常容易上手,因为大部分语句和OpenGL是完全相同的。
JOGL的安装:
JOGL由于现在还无官方版本,因此并不包含在Sun的JAVA包中。安装JOGL,用户必须自己手动安装。
安装JOGL之前,用户必须先安装SUN的Java 1.4.2以上版本。
由于是手动安装,各操作系统间可能会有部分不同。各类网站上提供下载jogl库文件也各不相同。以下是本人认为相对全文的JOGL文件下载地址:https://jogl.dev.java.net/servlets/ProjectDocumentList
虽然个版本均有差异,但有2个文件是必不可少的,一个是Jogl.jar文件用于提供JOGL API,另一个则时候称为native file的文件,该文件根据不同的操作系统有所不同,主要功能是提供JAVA与操作系统的OpenGL库之间的通信调用。
Mac OS X用户:
本人使用的是 jogl.jar 以及 libjogl.jnilib文件。 将此2文件拷贝到 System->Library->Java->Extensions目录下。安装就算基本完成了,Eclipse以及xCode均能自动识别其路径。
Windows用户:
根据本人自身经验,Windows用户安装JOGL,与大部分文章所写的有一点点小小的出入。
Windows用户将需要jogl.jar以及jogl.dll 2个文件,将文件复制到 C:\>Program File->Java->J2re1.42_11 (根据个人安装的Java版本不同,有所不同.)->Bin 和 Lib目录中。而不是大多数文章所提到的,复制到Java的安装目录中。
安装完成后运行以下程序,如果未能 成功输出并未现实任何错误信息,说明安装成功。
import net.java.games.jogl.*;
public class HelloWorld
{
public static void main(String arg[])
{
try
{
System.loadLibrary("jogl");
System.out.println("Hello World"); //如果现实hello world,说明jogl native lib安装成功。
GLCapabilities caps = new GLCapabilities();
System.out.pringln("Hello JOGL"); //如果现实hello jogl说明可以正常调用。
}
catch (Exception e)
{
System.out.println(e);
}
}
}
㈨ vtk在Java2中的使用
VTK(Visualization ToolKit)是一个开放源码 自由获取的软件系统 全世界的数以千计的研究人员和开发人员用它来进行 D计算机图形 图像处理 可视化 VTK包含一个c++类库 众多的翻译接口层 包括Tcl/Tk Java Python Visualization Toolkit 是一个用于可视化应用程序构造与运行的支撑环境 它是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起来的 它将我们在可视化开发过程中会经常遇到的细节屏蔽起来 并将一些常用的算法封装起来 比如Visualization Toolkit 将我们在表面重建中比较常见的Marching Cubes 算法封装起来 以类的形式给我们以支持 这样我们在对三维规则点阵数据进行表面重建时就不必再重复编写MarchingCubes 算法的代码 而直接使用Visualization Toolkit 中已经提供的vtkMarchingCubes 类Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具 它以用户使用的方便性和灵活性为主要原则 具有如下的特点 ) 具有强大的三维图形功能 Visualization Toolkit 既支持基于体素Voxel basedrendering 的体绘制Volume Rendering又保留了传统的面绘制 从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件 ) Visualization Toolkit 的体系结构使其具有非常好的流streaming 和高速缓存caching 的能力 在处理大量的数据时不必考虑内存资源的限制 ) Visualization Toolkit 能够更好的支持基于网络的工具比如Java 和VRML 随着Web 和Internet 技术的发展Visualization Toolkit 有着很好的发展前景 ) 能够支持多种着色如OpenGL 等 ) Visualization Toolkit 具有设备无关性使其代码具有良好的可移植性 ) Visualization Toolkit 中定义了许多宏 这些宏极大的简化了编程工作并且加强了一致的对象行为 ) Visualization Toolkit 具有更丰富的数据类型 支持对多种数据类型进行处理 ) 既可以工作于Windows 操作系统又可以工作于Unix 操作系统极大的方便了用户下面介绍一下VTK在JDK _ 下的使用方法 ) 从vtk的网站()上下载最新的软件包 版本是 然后把它安装到C:vtk 目录下 ) 从Sun官方下载链接 版本 _ 然后安装到C:j sdk _ 上 ) 设置环境变量 系统 >高级 >环境变量 >path 设置为C:j sdk _ in;C:ProgramFilesJavaj re _ in;C:j sdk _ jrein;C:vtk in ) 拷贝C:vtk in*java dll到系统目录 ) 编译 运行 为了方便起见 拷贝C:vtk ExamplesTutorialStep Java目录下的Cone java到d盘 当前目录为d盘D:>javac classpath c:vtk invtk jar Cone javaD:>java classpath ;c:vtk invtk jar Cone源码如下 //// This example creates a polygonal model of a cone and then renders it to// the screen It will rotate the cone degrees and then exit The basic// setup of source > mapper > actor > renderer > renderwindow is // typical of most VTK programs //// We import the vtk wrapped classes first import vtk *;// Then we define our class public class Cone {// In the static contructor we load in the native code // The libraries must be in your path to work static { System loadLibrary( vtkCommonJava ); System loadLibrary( vtkFilteringJava ); System loadLibrary( vtkIOJava ); System loadLibrary( vtkImagingJava ); System loadLibrary( vtkGraphicsJava ); System loadLibrary( vtkRenderingJava ); }// now the main programpublic static void main (String []args) {// // Next we create an instance of vtkConeSource and set some of its// properties The instance of vtkConeSource cone is part of a// visualization pipeline (it is a source process object); it proces data// (output type is vtkPolyData) which other filters may process //vtkConeSource cone = new vtkConeSource();cone SetHeight( );cone SetRadius( );cone SetResolution( ); // // In this example we terminate the pipeline with a mapper process object // (Intermediate filters such as vtkShrinkPolyData could be inserted in// beeen the source and the mapper )We create an instance of// vtkPolyDataMapper to map the polygonal data into graphics primitives We// connect the output of the cone souece to the input of this mapper //vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();coneMapper SetInput( cone GetOutput() );// // Create an actor to represent the cone The actor orchestrates rendering// of the mapper s graphics primitives An actor also refers to properties// via a vtkProperty instance and includes an internal transformation// matrix We set this actor s mapper to be coneMapper which we created// above //vtkActor coneActor = new vtkActor();coneActor SetMapper( coneMapper );//// Create the Renderer and assign actors to it A renderer is like a// viewport It is part or all of a window on the screen and it is// responsible for drawing the actors it has We also set the background// color here//vtkRenderer ren = new vtkRenderer();ren AddActor( coneActor );ren SetBackground( );//// Finally we create the render window which will show up on the screen// We put our renderer into the render window using AddRenderer We also// set the size to be pixels by //vtkRenderWindow renWin = new vtkRenderWindow();renWin AddRenderer( ren );renWin SetSize( );//// now we loop over degreeees and render the cone each time//int i;for (i = ; i < ; ++i){// render the imagerenWin Render();// rotate the active camera by one degreeren GetActiveCamera() Azimuth( );}} } lishixin/Article/program/Java/JSP/201311/19769
㈩ 什么是跨平台
跨平台泛指程序语言、软件或硬件设备可以在多种作业系统或不同硬件架构的电脑上运作。
广义面言,一般的计算语言都可做到跨平台,开发商只需要提供各种平台下的Runtime/中间件环境即可。严格而言是指用某种计算机语言编制的程序只需要做小量的修改,编译之后即可在另外一种平台下运行,此时并不提供Runtime/中间件环境。例如Java是一种提供Runtime环境的跨平台解决方案,而C而是一种标准且严格的跨平台语言。
跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不信赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。相对而言如果某种计算机语言不用修改代码即可做到高度跨平台,那么此语言就越抽象,硬件控制力就越低,只适合开发高度抽象的模型系统。诸如java,delphi和易语言,都已做到了跨平台。它们将可以在多种系统下开发,运行和维护。
大部分电脑语言从绝对意义而言,都是跨平台的:因为都是以高级的、人类可读的方式来对CPU发号指令,这样也就没必要依赖于任何作业系统。但如果要用系统的部件工具箱,来新建用户图形界面(GUI),就可能会用到开发员特定系统中的API函数或库类。虽然C++是跨平台的,但Windows下用到Win32 API的C++程式,一般就不能在Unix机器上编译。不同编译器对语言规范的解释也有所差异。这样的话,在针对不同系统进行构建之前,程式就得加以考虑。
一些如Java这样的语言,从一开始就意识到要在各个平台下运行,所以跨平台在其平台的本地语言环境中已经实现。例如,Java可以跨平台使用,正是由于Swing库在许多平台下的实现。类似的,能进行跨平台的文件存取,是因为有各自平台下文件存取的库。以此类推,各种跨平台问题,都需要各自的本地库来解决。wxWidgets框架就是这样的一个跨平台库,根据不同的跨平台问题,提供了许多不同的解决方案;类似的库有许多,可以根据不同语言的跨平台开发,而采用相应的库。
针对每种作业系统、CPU,而提供并测试各自的编译版本,这种做法的可行性很小;开源软体则允许用户自己来编译目的码(object code),这样在跨平台方面更好一些。类似的,那些解释型语言,或者需要虚拟机的语言,也更加符合跨平台的要求,因为用户也要自己进行编译。Sun公司的Java虚拟机Hotspot,只针对几种而不是全部平台,提供编译好的二进位文件。例如,Sun对于GNU/Linux,只支持i386平台,但如果谁在PowerPC或者SPARC电脑上运行Linux,就只好自己编译本地的机器码(machinecode),或者使用第三方软体,才能运行Java程式。
许多API(应用程式接口)依赖于平台。OpenGL可以看作是跨平台的,因为其不依赖于任何特定的作业系统、CPU构架或者某个牌子的图形设备。特定平台的API可以在其他系统上作为兼容层而新建,例如WINE的库,Windows程式就可以在UNIX系统上运行。
另外许多程式语言还有跨平台的扩展以及中间件,这样程式设计师对于同样的原始码,只要进行一点小修改,就可以在不同平台下编译/运行,例如Qt和wxWidgets。
支持多种作业系统的软体
1. 资料库管理系统(DBMS):
MySQL:Solaris、Linux、Windows、FreeBSD
Oracle:Solaris、Linux、Windows
2. 网站服务器、应用程式服务器:
Apache:Solaris、Linux、Windows、FreeBSD
Tomcat:Linux、Windows、FreeBSD
3. 网际网路浏览器:
Mozilla Firefox:Linux、FreeBSD、Solaris、AIX、Windows、
可在不同作业系统上进行软体开发的程式语言
C语言、C++、Java
Perl、Tcl、Erlang
Python、Delphi+Kylix、REALbasic
开发java应用的跨平台,包含五方面的内容:
一、跨应用服务器
二、跨数据库
三、跨操作系统
四、跨浏览器
五、多语言支持
下面分别来说一下。
■跨应用服务器
这一点,看起来好像有些多余,java的口号之一不就是“一次编译,到外运行”嘛,可实际经验告诉我们,这仅仅是一个口号而已。实际中是“一次编译,到处调试”。为什么会这样?从应用服务器来说,各个产品或多或少都在标准的java规范之上进行了一些拓展,小规模的应用开发,多以tomcat为基准;大规模的应用,多以weblogic/websphere为基准。
那么开发完成的应用,可否在所有的应用服务器上正常部署呢?答案是否定的。在tomcat5上部署没问题,在tomcat4上却可能有问题;在tomcat5/4上没问题,却可能在resin/jetty/weblogic/websphere上有问题。在我的经历中,在resin/jetty/weblogic为基准进行开发的应用,部署到tomcat上基本上没什么问题。但是以tomcat为基准的应用,部署到其他应用服务器中,却可能出现各种各样的问题。这与tomcat本身的定位和开发方式有关,它更像是一个学术产品,而不是一个商业产品。
小型的应用,我偏好resin,它的速度、稳定性、兼容性、中文处理,都是非常不错的。相比而言,以“纯java、快速”着称的jetty,就不太令人满意。jetty的4/5/6各个版本中,对session的存放位置、web.xml的标准、struts的plugin的支持、log4j的处理,都各不相同。在最新的jetty6中,竟然会要命地“不能使用session.validate()”方法,一使用此方法之后,就无法再使用set/getAttribute了。
也曾经在将一个应用转移到websphere5上时,费劲周折。这个应用跑在其他应用服务器上都没问题,但是一部署到ws5上,就无法正常加载struts的配置文件。本以为是struts配置文件写得有问题,但即便把所有的action/form配置均去掉,只保留一个空的配置文件,也无法正常启动。最后实在无法,只能乱碰运气,考虑是否是struts的几个jar包版本有问题,经检查,发现应用中使用的是struts1.2的jar包,换成struts1.1的jar包,再启动后就一切正常。这样的问题,可真的是折磨人呢。
所以,我认为跨应用服务器是很重要的。你不能告诉客户,俺们的系统只能跑在tomcat下面,至于您花重金购买的weblogic/websphere,对不起,我们暂时还不支持。客户会吐血的。
■跨数据库
经常看到某大公司产品,要求必须使用oracle或者sqlserver数据库,你想换个数据库来部署?没门,人家说了,我们的产品只支持这一种数据库,你就老实的用吧。但对于客户方来说,为了减少投资,并且保证内部系统尽可能使用同一种数据库以减少维护成本(总不能请一个oracle DBA,再请一个sqlserver DBA吧?),总会希望新系统使用的数据库是以前用过的吧。
现在有了hibernate,在此基础上开发的应用,基本上是能满足跨数据库要求的,个人认为这是hibernate最大的亮点。但也要注意,在开发中尽可能考虑到不同数据库的特性。诸如sqlserver的text/image字段上不能查distinct,oracle内的各种对象名称长度不得超过30等,尽量不要调用数据库的内部特性(如存储过程、视图等)
■跨操作系统
这一点,貌似没有什么可说的,很少有开发出的系统只能部署在一种操作系统上的。不过有一点也要注意,如果系统中某些功能依赖于通过JNI来调用windows本地组件的话,比如打印、word/excel操作,或与只能运行在windows下的报表组件(如国内的数巨报表、如意报表)集成的话。
■跨浏览器
窃以为,如果只是做国内的应用,这一点倒不重要,就以IE为标准来开发也未尝不可。
PS:完全支持IE也不是一件容易的事情,IE5/6本身就有不少的差异。
但如果产品本身想立足于世界,想与国外产品竞争,对浏览器的全面支持也必不可少。至少应该同时支持ie和firefox吧,如果对自身严格要求的话,我认为应以opera为标准,opera对html/css/javascript的标准是实现和支持得最好的浏览器。
■多语言支持
如果您的产品只想在中国卖,根本就不考虑世界市场,那这一条就pass好了。
Java程序跨平台需要注意什么
使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写一个真正的跨平台的Java程序呢?下面是在编写跨平台的Java程序是需要注意的一些事情:
1.编写Java跨平台应用程序时,你可以选择JDK1.0,1.1,1.2或支持它们的GUI开发工具如:Jbuilder,VisualAgeforJava等等,但是必须注意你的Java程序只能使用Java核心API包,如果要使用第三方的类库包,则该类库包也要由Java核心包开发完成,否则在发布你的程序的时候还得将支持该Java类库包的JVM发布出去。也就是说,你的程序需要是100%纯Java的。举一个例子,VisualJ++就不是纯Java的,由VisualJ++编写的程序也就不具有平台无关性。
2.无论你使用的是JDK或其他开发工具,在编译时都要打开所有的警告选项,这样编译器可以尽可能多的发现平台相关的语句,并给出警告。虽然不能保证没有编译时警告错误的程序一定是跨平台的,但含有警告错误的程序却很有可能是非平台无关的。
3.在程序中使用任何一个方法的时候,要详细察看文档,确保你使用的方法不是在文档中已经申明为过时的方法(Deprecatedmethod),也不是文档中未标明的隐含方法(Undocumentedmethod)。
4.退出Java程序时尽量不要使用java.lang.System的exit方法。Exit方法可以终止JVM,从而终止程序,但如果同时运行了另一个Java程序,使用exit方法就会让该程序也关闭,这显然不是我们希望看到的情况。事实上要退出Java程序,可以使用destory()退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。只有在程序非正常退出时,才使用exit方法退出程序。
5.避免使用本地方法和本地代码,尽可能自己编写具有相应功能的Java类,改写该方法。如果一定要使用该本地方法,可以编写一个服务器程序调用该方法,然后将现在要编写的程序作为该服务器程序的客户程序,或者考虑CORBA(公共对象请求代理)程序结构。
6.Java中有一个类似于Delphi中的winexec的方法,java.lang.runtime类的exec方法,作为该方法本身是具有平台无关性的,但是给方法所调用的命令及命令参数却是与平台相关的,因此,在编写程序时要避免使用,如果一定要调用其他的程序的话,必须要让用户自己来设置该命令及其参数。比如说,在windows中可以调用notepad.exe程序,在linux中就要调用vi程序了。
7.程序设计中的所有的信息都要使用ASCII码字符集,因为并不是所有的操作系统都支持Unicode字符集,这对于跨平台的Java中文软件程序不能不说是一大噩耗。
8.在程序中不要硬性编码与平台相关的任何常量,比如行分隔符,文件分隔符,路径分隔符等等,这些常量在不同的平台上是不同的,比如文件分隔符,在UNIX和MAC中是“/”,在windows中是“\”,如果要使用这些常量,需要使用jdava.util.Properties类的getProperty方法,如java.util.Properties.getProperty(“file.separator”)可以获得文件分隔符,getProperty(“line.separator”)返回行分隔符,getProperty(“path.separator”)返回路径分隔符。
9.在编写跨平台的网络程序时,不要使用java.net.InetAddress类的getHostName方法得到主机名,因为不同的平台的主机名格式是不同的,最好使用getAddress得到格式相同的IP地址,另外,程序中所有的主机名都要换成IP地址,比如www.263.net就要换成相应的IP地址。
10.涉及文件操作的程序需要注意:不要在程序中硬性编码文件路径,理由和8中一样,只是这一点特别重要,因此单独提出。而且,不同平台对于文件名使用的字符及最大文件名长度的要求不同,编写你的程序的时候要使用一般的ASCII码字符作为文件的名字,而且不能与平台中已存在的程序同名,否则会造成冲突。
11.如果您写的程序是GUI程序,在使用AWT组件时不能硬性设置组件的大小和位置而应该使用Java的布局管理器(layoutmanager)来设置和管理可视组件的大小和位置,否则有可能造成布局混乱。
12.由于不同的操作系统,不同的机器,系统支持的颜色和屏幕的大小和分辨率都不同,如何获得这些属性呢?使用java.awt.Systemcolor类可以获得需要的颜色,如该类的inactiveCaption就是窗口边框中活动标题的背景颜色,menu则是菜单的背景颜色。使用java.awt.Toolkit的getScreenResolution可以以“象素每英寸”为单位显示屏幕的分辨率。该类的getScreenSize可以得到屏幕大小(英寸),loadSystemColors可以列出所有的系统颜色。