gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:49:46 24 4
gpt4 key购买 nike

问候,

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

 JFrame(GraphicsConfiguration) 

看似允许这样做:

我的第一次尝试是创建我自己的 GraphicsConfiguration,当调用 getType() 时,GraphicsDevice 报告 GraphicsDevice.TYPE_IMAGE_BUFFER。

但是 JFrame.init 专门查找类型并在类型不是 TYPE_RASTER_SCREEN 时抛出异常:

    if (graphicsConfig.getDevice().getType() !=
GraphicsDevice.TYPE_RASTER_SCREEN) {
throw new IllegalArgumentException("not a screen device");
}

接下来,我尝试使我返回的 GraphicsDevice 报告 GraphicsDevice.TYPE_RASTER_SCREEN。这允许正确初始化 JFrame,但是当它去显示它时,我得到了

Exception in thread "main" java.lang.ClassCastException: TestGraphicsConfiguration cannot be cast to sun.awt.X11GraphicsConfig

因此,关于如何绘制未显示在屏幕上但布局和功能始终如一的 JFrame,我已经没有什么想法了。

这是在掉进兔子洞吗,还是可以这样做?

最佳答案

Java top-level container例如JFrame需要访问 peer component原生于主机平台,通常通过 JNI。或者,您可以使用 BufferedImagejava.awt.headless 模式,如讨论 here .

附录:

I wonder if "any human" can replace how peers are selected.

我不知道如何替换特定的对等组件,但可以唤起特定于平台的 native 组件; Java Native Access (JNA)就是这样一种途径。作为一个极端的例子,这个 6502 JVM在以 1 MHz 运行的 8 位处理器上以 128K 运行。演示,包括 source对于右下角的屏幕截图,是使用 javac 编译的。

关于java - 在非光栅图形配置中显示 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5599215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com