Java 在非光栅图形配置中显示JFrame

Java 在非光栅图形配置中显示JFrame,java,swing,off-screen,Java,Swing,Off Screen,您好 我正在尝试在非屏幕设备中获取JFrame绘图。JFrame构造函数有一个 JFrame(GraphicsConfiguration) 要允许这一点: 我的第一次尝试是创建我自己的GraphicsConfiguration,调用getType()时,GraphicsDevice报告了GraphicsDevice.TYPE\u IMAGE\u缓冲区 但是,JFrame.init会专门查找该类型,如果该类型不是type\u graster\u SCREEN,则会引发异常: if (

您好

我正在尝试在非屏幕设备中获取JFrame绘图。JFrame构造函数有一个

 JFrame(GraphicsConfiguration) 
要允许这一点:

我的第一次尝试是创建我自己的GraphicsConfiguration,调用getType()时,GraphicsDevice报告了GraphicsDevice.TYPE\u IMAGE\u缓冲区

但是,JFrame.init会专门查找该类型,如果该类型不是type\u graster\u SCREEN,则会引发异常:

    if (graphicsConfig.getDevice().getType() !=
        GraphicsDevice.TYPE_RASTER_SCREEN) {
        throw new IllegalArgumentException("not a screen device");
    }
接下来,我尝试制作GraphicsDevice,返回报告GraphicsDevice.TYPE\u RASTER\u屏幕。这允许正确初始化JFrame,但当它显示它时,我得到了

Exception in thread "main" java.lang.ClassCastException: TestGraphicsConfiguration cannot be cast to sun.awt.X11GraphicsConfig
所以我已经没有办法了,关于如何画一个JFrame,它不会出现在屏幕上,但它的布局和功能从来都不差

我在这里遇到了麻烦,或者这可以做到吗?

像这样的Java需要访问主机平台的本机,通常是通过JNI。或者,您可以使用或
java.awt.headless
模式,如前所述

增编:

我想知道“任何人”能否取代同龄人的选择方式


我不知道如何替换某个特定的对等组件,但可以调用特定于平台的本机组件;就是这样一条路。作为一个极端的例子,它在以1MHz运行的8位处理器上以128K的速度运行。演示,包括右下方的屏幕截图,都是使用
javac

编译的,也许这是实现目标的另一种方式。你到底想做什么?只是玩玩而已。在测试swing代码时,看到了大多数工具是如何做到这一点、做到这一点的,并且并不特别喜欢它。我没有任何真正的具体想法,只是探索。对不起,这有点粗略,但它可能提供了澄清的基础。我想你不能打印JFrimes,然后,我想知道“任何人”是否可以取代如何选择同行。奇怪的是,对等选择算法与图形配置无关。