gpt4 book ai didi

java - 为自定义驱动程序创建 GraphicsDevice

转载 作者:行者123 更新时间:2023-12-01 14:59:22 24 4
gpt4 key购买 nike

我正在开发一个在嵌入式系统中使用 Java 的项目。我有用于屏幕和触摸输入的驱动程序,以及用于文本输入的虚拟键盘。我的屏幕驱动程序有一个可以绘制的Graphics2D对象和一个用于更新的repaint(Rectangle)方法。同样,触摸驱动程序能够为监听器生成 MouseEvents

现在我正在直接在屏幕上绘图。这很好,但我真正想要的是允许我的库的用户创建 JFrame 并使用普通的 Swing 元素。但是,默认的 GraphicsEnvironment 是 headless (headless)的,因为 Java 看不到我的 EInkDriver 类或我的 TouchDriver 类。

我知道有多种方法可以调用组件的 paint 方法来获取图像;但是,当您绘制 Container 时,这会出现问题,并且我还想向用户提供 GraphicsConfiguration ,以便他们可以编写诸如 JFrame 框架之类的内容= new JFrame(getEInkGraphicsConfiguration()); 并像编写桌面 Swing 应用程序一样继续操作。

鉴于我已经具备的这些功能,我将如何创建一个 GraphicsDeviceGraphicsEnvironment 来允许我在项目中使用 Swing?

最佳答案

我简单地浏览了一下抽象类 GraphicsEnvironment ,猜测,可以派生自己的类,并使用第64行的“java.awt.graphicsenv”键来注册它。

好在有抽象类,而且代码很少。

<小时/>

此后

来自 GraphicsEnvironment 的以下代码显示:

  1. 用于或不用于 headless (headless)的系统属性(您可以设置)。
  2. 环境设置DISPLAY。

也许您可以使用此信息。

                        String osName = System.getProperty("os.name");
if (osName.contains("OS X") && "sun.awt.HToolkit".equals(
System.getProperty("awt.toolkit")))
{
headless = defaultHeadless = Boolean.TRUE;
} else {
headless = defaultHeadless =
Boolean.valueOf(("Linux".equals(osName) ||
"SunOS".equals(osName) ||
"FreeBSD".equals(osName) ||
"NetBSD".equals(osName) ||
"OpenBSD".equals(osName)) &&
(System.getenv("DISPLAY") == null));
}

关于java - 为自定义驱动程序创建 GraphicsDevice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13895614/

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