3

为了将 C/C++ X11 应用程序嵌入到另一个 Java 应用程序中,是否可以在以下位置重新设置 X11 顶级小部件:

  • 一个 JFrame 或一个 JWindow(使用包 sun.awt.x11 捕获其 X11 对等方的 X11 窗口 ID)?
  • 还是JPanel?

我更喜欢用 JPanel 重新父母,但我不确定这是否可能。

4

1 回答 1

2

我搜索并发现:

一个递归函数,它将搜索(从根窗口开始)具有所需名称的窗口

Window windowWithName(Display *dpy, Window top, char *name)
{
        Window *children, dummy;
        unsigned int nchildren;
        unsigned int i;
        Window w = 0;
        char *window_name;

        if (XFetchName(dpy, top, &window_name) && !strcmp(window_name, name))
                return (top);

        if (!XQueryTree(dpy, top, &dummy, &dummy, &children, &nchildren))
                return (0);

        for (i = 0; i < nchildren; i++)
        {
                w = windowWithName(dpy, children[i], name);
                if (w)
                        break;
        }
        if (children)
                XFree((char *) children);
        return (w);
}

您可以随时打开一个java.net.Socket6000左右的端口并X11自己说话。
可能有帮助的代码

参考,希望对您有所帮助注意
不再sun.awt.x11存在jdk7

于 2012-08-20T14:39:07.190 回答