0

組み込みシステムで Java を使用するプロジェクトに取り組んでいます。画面とタッチ入力用のドライバーと、テキスト入力用の仮想キーボードがあります。私のスクリーン ドライバには、Graphics2D描画できるオブジェクトとrepaint(Rectangle)更新するためのメソッドがあります。同様に、タッチ ドライバーはMouseEventsリスナー用に生成できます。

現在、画面に直接描画しています。これは問題ありませんが、私が本当に望んでいるのは、ライブラリのユーザーが JFrame を作成し、通常の Swing 要素を使用できるようにすることです。EInkDriverただし、デフォルトの GraphicsEnvironment はヘッドレスです。これは、Java が自分のクラスや自分のクラスを認識しないためTouchDriverです。

コンポーネントのメソッドを呼び出しpaintて画像を取得する方法があることは承知しています。しかし、これには をペイントするときに問題があります。また、デスクトップ Swing アプリを作成しているかのようContainerに、ユーザーが のGraphicsConfigurationようなものを作成して続行できるように、 を提示したいと思います。JFrame frame = new JFrame(getEInkGraphicsConfiguration());

私がすでに持っているこれらの機能を考えると、プロジェクトで Swing を使用できるようにする を作成するにはどうすればGraphicsDeviceよいでしょうか?GraphicsEnvironment

4

1 に答える 1

1

私は抽象クラスGraphicsEnvironmentを非常に簡単に見て、推測すると、独自のクラスを派生させ、64行目の「java.awt.graphicsenv」キーを使用してそれを登録することができます。

幸いなことに、抽象クラスがあり、コードはほとんどありません。


その後

GraphicsEnvironment の次のコードは、次のことを示しています。

  1. ヘッドレスまたは非ヘッドレスに使用されるシステム プロパティ (設定可能)。
  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));
                        }
于 2012-12-15T20:09:33.133 に答える