Java 从指针在Objective-C中创建NSWindow?

Java 从指针在Objective-C中创建NSWindow?,java,objective-c,accessibility,lwjgl,Java,Objective C,Accessibility,Lwjgl,假设我正在使用LWJGL 3创建一个窗口,该窗口允许我通过GLFWNativeCocoa#GLFWGetCoCoCoaWindow(长:窗口)获取指向底层NSWindow的指针,即: 使用这个指针,如果我执行本机调用并将其传递给objective-C函数,是否可以实例化NSWindow或获取对它的引用,以便从较低的级别操作该窗口 Cheers在lwjgl源代码中快速搜索glfwGetCocoaWindow,结果给出了以下示例:modules/samples/src/test/java/org/l

假设我正在使用LWJGL 3创建一个窗口,该窗口允许我通过GLFWNativeCocoa#GLFWGetCoCoCoaWindow(长:窗口)获取指向底层NSWindow的指针,即:

使用这个指针,如果我执行本机调用并将其传递给objective-C函数,是否可以实例化NSWindow或获取对它的引用,以便从较低的级别操作该窗口


Cheers

在lwjgl源代码中快速搜索
glfwGetCocoaWindow
,结果给出了以下示例:
modules/samples/src/test/java/org/lwjgl/demo/glfw/Gears.java
。在本例中,它们不会对
CoCoCoaWindow
处理程序执行直接向上的Objective-C调用,而是对该窗口句柄上的选择器执行msgSend。代码如下:

if ( Platform.get() == Platform.MACOSX ) {
    long cocoaWindow = glfwGetCocoaWindow(window);

    long objc_msgSend = ObjCRuntime.getLibrary().getFunctionAddress("objc_msgSend");
    long contentView = invokePPP(objc_msgSend, cocoaWindow, sel_getUid("contentView"));

    invokePPV(objc_msgSend, contentView, sel_getUid("setWantsBestResolutionOpenGLSurface:"), false);

    boolean bool = invokePPZ(objc_msgSend, contentView, sel_getUid("wantsBestResolutionOpenGLSurface"));
        System.out.println("wantsBestResolutionOpenGLSurface = " + bool);
}
与上述代码中的
“contentView”
不同,尝试不同的选择器是值得的

if ( Platform.get() == Platform.MACOSX ) {
    long cocoaWindow = glfwGetCocoaWindow(window);

    long objc_msgSend = ObjCRuntime.getLibrary().getFunctionAddress("objc_msgSend");
    long contentView = invokePPP(objc_msgSend, cocoaWindow, sel_getUid("contentView"));

    invokePPV(objc_msgSend, contentView, sel_getUid("setWantsBestResolutionOpenGLSurface:"), false);

    boolean bool = invokePPZ(objc_msgSend, contentView, sel_getUid("wantsBestResolutionOpenGLSurface"));
        System.out.println("wantsBestResolutionOpenGLSurface = " + bool);
}