jdk1.6中如何获得Windows窗体的HWND?

weileily 2007-06-20 11:55:55
Windows下使用JDK1.6进行SWING开发,需要获得当前窗体(如JPanel)的HWND?网上可以搜到的使用DrawingSurfaceInfo的方法,似乎在1.4以后已经失效了。不知道哪位有比较好的,确保可以使用的方法能够提供。谢谢!
...全文
493 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengmingjie 2007-06-25
  • 打赏
  • 举报
回复
还是用jni调用dll来实现吧
weileily 2007-06-25
  • 打赏
  • 举报
回复
AWT的窗体也是本地的控件,是否有办法能够获得AWT窗体的句柄呢?我看了网上的一些资料,都是通过获得同位体的方法来实现的,但在现在的JDK中已经不允许用户直接操作同位体了,DrawingSurface也无法获得了。还有什么办法可以用来获得AWT控件的句柄呢?
shan1119 2007-06-21
  • 打赏
  • 举报
回复
不会,也没用过.
fool_leave 2007-06-21
  • 打赏
  • 举报
回复
HWND?
java里没有这个概念的
你vc用多了吧
pkuying 2007-06-21
  • 打赏
  • 举报
回复
设JPanel 为p
JComponent c=p;
while(! c instanceof JFrame)
c=c.getParent();
hcmsxy 2007-06-21
  • 打赏
  • 举报
回复
C吧。 写个dll.

使用WindowsApi
FindWindow(NULL,_T("你的窗口标题"));

约翰羊 2007-06-21
  • 打赏
  • 举报
回复
mark too
a_nuo 2007-06-21
  • 打赏
  • 举报
回复
mark
weileily 2007-06-21
  • 打赏
  • 举报
回复
嗯,谢谢楼上的回复,我也做了类似的实验。发现JPanel无法完成我所需要的功能。我采用SWT来实现了。
hcmsxy 2007-06-21
  • 打赏
  • 举报
回复
没看明白你到底是要得到JPanel的Handle还是JPanel所在JFrame的Handle.


首先,swing 的大部分组件都是swing自己画出来的。 底层windows根本不知道这些组件。所以windows中也就没有它们的Handle. JPanel 好像(记得好像是)就是这样的一个组件,它是一个轻量级的。

但是JFrame 不是的,你可以 windows 中找到它的Handle.

用java 实在不知道如何能得到JFrame的Handle.

不过,用 VC写一个很简单的DLL是可以实现的。核心代码就是FindWindow(NULL,_T("window title")) 这个windows api,它返回的结果就是 HWND .

用JNI 调这个Dll就可了。 我刚刚试过,完全可以实现。


另外可以考虑 SWT . 他的实现机制是不同于swing的。
weileily 2007-06-21
  • 打赏
  • 举报
回复
我使用JAVA SWING写了一个主窗体,其中有一个用于进行三维渲染的JPanel。我使用OpenGL写了一个C++的动态链接库,通过SWIG转化为JAVA可以调用的形式。现在希望能够获得这个JPanel的窗体本地句柄,然后传给这个C++写的链接库,然后OpenGL渲染在我指定的这个JPanel上。因此,我想知道,在Linux/Windows下,如何获得SWING窗体的本地句柄。

如果这个方案不行,我希望有人能提供个我一个别的替代方案。谢谢!!
andybogard 2007-06-21
  • 打赏
  • 举报
回复
HWND是VC里的概念,一定要的话用JNI调吧
zzwh_0 2007-06-21
  • 打赏
  • 举报
回复
不知道windows程序的 HWND java中有没有
Cappuccino_mhc 2007-06-21
  • 打赏
  • 举报
回复
不会
没用java做过

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧