【发布时间】:2011-03-08 13:57:54
【问题描述】:
我在我的 java 应用程序中使用 MPlayer。根据其文档,我需要告诉 MPlayer 用于嵌入它的窗口 ID。我就是这样做的:
long winid = 0; //Window ID.
if (osName.startsWith("Windows")){
final Class<?> cl = Class.forName("sun.awt.windows.WComponentPeer");
java.lang.reflect.Field f = cl.getDeclaredField("hwnd");
f.setAccessible(true);
winid = f.getLong(overlay.getPeer()); //overlay is a canvas where MPlayer is embedded.
}
System.out.println(winid);
但是,不推荐使用 getPeer() 方法。我想知道是否有解决方法。
非常感谢您的帮助。
【问题讨论】:
-
弃用是一厢情愿;它已被弃用 b/c 它可能不可移植,但您并不关心。所以你做的是对的!其实你不需要使用反射。 WComponentPeer 有一个公共的 getHWnd(),所以你需要 ((WComponentPeer) c.getPeer()).getHWnd()
标签: java components window hwnd peer