在Windows下JVM如何绘制button和其他控件?

虽然Java程序是独立于平台的,但JVM本身依赖于平台。 我有兴趣了解Java如何在屏幕上绘制应用程序GUI(button和文本)。

在Windows下,通常使用窗口(来自user32.dll)或矩形区域(来自gdi32.dll)创buildbutton等控件对象 ,稍后使用提供的user32 / gdi32文本绘图将文本绘制到相应的窗口/区域句柄function。

我试着运行一个简单的两个button的Java GUI应用程序,使用swing并挂钩了gdi32.dll和user32.dll的大部分创build区域/窗口和文本绘制函数,但到目前为止,似乎Java程序只是使用这些本机DLL仅绘制主窗框。

Java.exe是否使用其他dll在屏幕上绘制button和其他控件? 如果是这样,为什么在已经有可用的本地dll进行绘制的情况下呢?

Windowspath在带有清单的LoadLibrary中search

如何知道一个DLL是否使用ASLR?

文件中的偏移量LoadLibrary

为什么在Windows上调用MinGW编译函数(不加载库)时会得到UnsatisfiedLinkError?

如何从HTML5中使用本地代码(Windows)

Visual C ++不会创build该dll文件并停止在* .lib

检查Windows API级别的DLL

如何获得一个DLL加载过程句柄

使用Makefile创build一个在Windows XP(32位)和Windows 7(64位)上运行的DLL

我应该与我的应用程序重新分配msvcrt.dll?

在Windows上,Java2D认使用Direct3D渲染器绘制基元。 您可以通过指定-Dsun.java2d.d3d=false来禁用它。 在这种情况下,将使用GDI渲染器。

添加-Dsun.java2d.trace=log,verbose选项来跟踪在Swing应用程序中调用哪些Java2D基元。

从维基百科文章

与AWT组件不同,Swing组件不是由平台特定的代码实现的。 相反,它们完全是用Java编写的,因此是独立于平台的。 术语“轻量级”用于描述这样的元素。

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...