虽然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编写的,因此是独立于平台的。 术语“轻量级”用于描述这样的元素。