【问题标题】:Embed HWND (Window Handle) in a JPanel在 JPanel 中嵌入 HWND(窗口句柄)
【发布时间】:2011-06-16 03:12:24
【问题描述】:

我正在尝试在 JPanel 中嵌入 HWND(窗口句柄)。

实际上,我可以将我的 HWND 嵌入到 JFrame 中,但嵌入的窗口始终位于其他组件的顶部,我无法移动它。如果尝试删除我的 JFrame 的所有子组件,则 HWND 会留在那里。 HWND 似乎是在 JFrame 之上绘制的,而不是作为子框架之一。

为了将 HWND 嵌入到 JPanel 中,我通过 jna 使用 User32:

User32.SetParent(iage.getRenderHwnd(), (int) getGUIHwnd(j));

我用它来获取我的 JFrame 的 HWND:

j.getPeer() != null ? ((WComponentPeer) j.getPeer()).getHWnd(): 0;

有没有办法将 HWND 嵌入到 JPanel 中或将其添加到其他组件中,以便我可以像在 UI 中一样定位它?

谢谢

【问题讨论】:

    标签: java awt hwnd


    【解决方案1】:

    JPanels 是轻量级组件(它们没有真正的本地对等点)。即他们已经使用了 (J)Frame 的句柄。看看 java.awt.Canvas。

    【讨论】:

    • 非常感谢,我可以将我的 HWND 链接到画布上,然后将其添加到 JPanel 中。
    • 欢迎您!请记住:在轻量级容器(即 JPanel 中的 Canvas)中混合重量级组件可能会产生很多意想不到的效果,Java 对上述问题进行了一些改进,但仍然要小心。不过,我已经有 9 年没有使用过重量级的东西了。
    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2013-01-02
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多