(57)【要約】【課題】ＭＤＩ（Multiple Document Interface）を有するＪａｖａ（登録商標）アプリケーションの描画速度を向上させる描画制御をおこなう。【解決手段】表示装置と計算機によって、Ｊａｖａ（登録商標）の内部フレーム上に配置される描画パネルを描画する描画制御方法において、ある矩形が配された描画パネルに描画指示があったときに、その描画パネルに対して、内部フレームのレイヤ番号とレイヤ位置番号にしたがって前面に配置される他の描画パネルと表示上重複していない部分の矩形を求める。そして、他の描画パネルの表示上重複していない部分の矩形と描画指示があった描画パネル上の矩形との重複領域となる矩形を求めて、その重複領域となる矩形のみを表示装置に描画する。【選択図】図１
2007219919.tif 000002
【特許請求の範囲】
【請求項１】
表示装置と計算機によって、複数のフレームの表示階層を定義して、前記フレーム上に描画パネルとに表示部品とを配して、前記描画パネルを描画する描画制御方法において、
第一の表示部品が配された第一の描画パネルに描画指示があったときに、
前記第一の描画パネルに対して、前記表示階層にしたがって前面に配置される第二の描画パネルと表示上重複していない部分の表示矩形を求めて、
前記表示矩形と前記第一の表示部品の重複領域を第二の表示部品とし、前記第二の表示部品を前記表示装置に表示することを特徴とする描画制御方法。
【請求項２】
前記複数のフレームの表示階層は、レイヤ番号と、同一内のレイヤ番号に対してはレイヤ位置番号とにより定義されることを特徴とする請求項１記載の描画制御方法。
【請求項３】
表示装置と計算機によって、Ｊａｖａ（登録商標）の内部フレーム上に配置される描画パネルを描画する描画制御方法において、
第一の矩形が配された第一の描画パネルに描画指示があったときに、
前記第一の描画パネルに対して、内部フレームのレイヤ番号とレイヤ位置番号にしたがって前面に配置される第二の描画パネルと表示上重複していない部分の矩形を求めて、
前記表示上重複していない部分の矩形と前記第一の矩形の重複領域を第二の矩形とし、前記第二の矩形を前記表示装置に表示することを特徴とする描画制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画制御方法に係り、パーソナルコンピュータ等の計算機装置において、Ｊａｖａ（登録商標）内部フレームを使用したＭＤＩアプリケーションソフトウェアの画面の描画を高速化する用途に用いて好適な描画制御方法に関する。
【背景技術】
【０００２】
コンピュータのグラフィクスのユーザインタフェースとして、同時に複数のウィンドウを表示するマルチウィンドウは、一般的な技術として定着している。
【０００３】
ＭＤＩ（Multiple Document Interface）は、コンピュータ装置上のアプリケーションソフトウェアにおいて、図３に示すようにアプリケーションソフトウェアのウィンドウ(親ウィンドウ)の中に複数の子ウィンドウを表示する方式である。Ｊａｖａ（登録商標）のＧＵＩにおいてＭＤＩを実現するには、親ウィンドウ１(JFrameクラス等)にデスクトップ区画１１(JDesktopPaneクラス)という部品を配置し、その上に子ウィンドウとして内部フレーム(JInternalFrameクラス)という部品を配置する。デスクトップ区画は、配下の内部フレームの表示位置、表示階層等、内部フレームに関する情報を管理している。
【０００４】
表示階層は、レイヤ番号とレイヤ内位置番号で管理される。レイヤ番号が大きい内部フレーム上に配置される部品はレイヤ番号が小さい内部フレームに配置される部品よりも必ず前面に表示される（なお、以下では、このことを簡略化して「内部フレームが前面に表示される」と表現する）。同一レイヤ番号の内部フレーム同士では、マウスによる内部フレームの選択等で前面／背面が切り替わる。その際、レイヤ内位置番号は前面に表示されている内部フレームから０，１，２，…と昇順に割り当てられる。
【０００５】
Ｊａｖａ（登録商標）の描画に関する従来技術としては、以下の特許文献１がある。この特許文献１に開示された画面データの処理システムは、コンピュータ装置より画面データとしてＪａｖａ（登録商標）のソースコードを入力し、プログラマブル表示器のＪａｖａ（登録商標）実行環境で実行するものであり、コンピュータ装置だけてはなく、プログラマブル表示器側でもエディタにより必要に応じて画面データのＪａｖａ（登録商標）ソースコードを変更できるものとしている。しかしながら、描画性能の向上策については言及していない。
【０００６】
【特許文献１】特開２０００−２７６３３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
Ｊａｖａ（登録商標）の内部フレーム上に描画パネルを配置し、その描画パネル上に図形や文字等の画像を高速に描画するアプリケーションにおいては、図３、図４に示すように内部フレーム２の描画パネル２１の前面に別の内部フレーム３を重複させた場合、重複させない場合よりも、描画パネル２１への描画速度が劣化してしまうという問題点があった。
【０００８】
この原因は、内部フレームが重複している場合のＪＲＥ（Java Runtime Environment、Ｊａｖａ（登録商標）実行環境）の描画処理にある。すなわち、Ｊａｖａ（登録商標）アプリケーションが、背面の内部フレーム２の描画パネル２１内の矩形２２への描画を必要とし、ＪＲＥに矩形２２への描画を指示した場合、ＪＲＥはアプリケーションに指示されたとおり、いったん、矩形２２の全領域を画面に描画する。その後、矩形２２と重複している内部フレーム３内の矩形３２を画面に再描画する。内部フレーム３の再描画処理が発生するため、描画速度が劣化する。
【０００９】
本発明は、上記問題点を解決するためになされたもので、その目的は、ＭＤＩを有するＪａｖａ（登録商標）アプリケーションの描画速度を向上させることのできる描画制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
ＪＲＥの描画処理を独自に修正するのは困難なときには、Ｊａｖａ（登録商標）アプリケーション側での回避を考える。Ｊａｖａ（登録商標）アプリケーションが図１に示すように矩形２２への描画を必要とした場合、矩形２２と前面の内部フレーム３が重複していない矩形２３，２４への描画を指示することで、内部フレーム３の再描画処理の発生を抑止し、描画速度の劣化を防ぐ。
【００１１】
また、この描画制御方法によって、クラスライブラリのメソッドを提供することも可能である。
【発明の効果】
【００１２】
本発明によれば、ＭＤＩを有するＪａｖａ（登録商標）アプリケーションの描画速度を向上させることのできる描画制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
先ず、図５および図６を用いて本実施形態に係る描画制御方法を実行するためのハードウェア構成とソフトウェア構成について説明する。
図５は、本発明の描画制御方法を実行するためのハードウェア構成図である。
図６は、本発明の描画制御方法を実行するためのソフトウェア構成図である。
【００１４】
本発明の描画制御方法を実行するためのハードウェアとしては、Ｊａｖａ（登録商標）を実行できる計算機なら、ワークステーションでもＰＣでもよい。例えば、図５に示されるように、本実施形態の計算機システムのハードウェアは、計算機１００と表示装置２００、外部記憶装置３００、入出力装置４００が接続された構成になっている。
【００１５】
表示装置２００は、液晶ディスプレイやＣＲＴである。外部記憶装置３００は、一般的には、ハードディスクドライブが用いられている。また、入出力装置４００は、キーボードやマウスなどのポインティングデバイスである。
【００１６】
計算機１００は、ＣＰＵ１２０、メインメモリ１３０、ネットワークインタフェース１４０、ビデオインタフェース１５０、入出力インタフェース１６０、記憶装置インタフェース１７０が、バス１１０に接続された形態になっている。
【００１７】
また、計算機装置１００は、本実施形態では必須ではないが、ネットワークインタフェース１４０を有し、ＬＡＮ、ＷＡＮなどのネットワークに接続されていてもよい。
【００１８】
外部記憶装置３００に格納されているデータやプログラムは、メインメモリ１３０にロードされ、ＣＰＵ１２０により実行される。また、ＣＰＵ１２０は、接続されている各装置の制御もおこなう。
【００１９】
本発明の描画制御方法を実行するためのソフトウェアは、図６に示されるように、Ｊａｖａ（登録商標）の一般的な実行環境で実行される。Ｊａｖａ（登録商標）ＶＭ５１０は、Ｊａｖａ（登録商標）のバイトコードを実行する仮想的なマシンであり、通常はソフトウェアで実装される。
【００２０】
Ｊａｖａ（登録商標）のソースコードは、Ｊａｖａ（登録商標）コンパイラによってバイトコードに変換され、クラスファイル５２０に格納される。また、標準クラスライブラリ５１０も提供されている。
【００２１】
ユーザの作成したＪａｖａ（登録商標）アプリケーション５３０は、クラスファイルの必要なメソッドを実行することにより処理を進める。本発明の描画方法は、Ｊａｖａ（登録商標）アプリケーションとして実装してもよいし、標準クラスライブラリ５１０のメソッドとして実装されてもよい。
【００２２】
次に、図７から図１０を用いて本発明の描画制御方法の処理について説明する。
【００２３】
図７は、本発明の描画制御方法により、描画パネルを表示する処理を示すフローチャートである。
【００２４】
以下、図１および図３の画面の状況を例に採り説明する。
【００２５】
図７に示す処理は、描画パネルＰ１に対して描画が指示されたものとする。
【００２６】
先ず、描画パネルＰ１が画面上で可視である矩形領域のリストＬ１１を取得する（Ｓ１１）。この処理の詳細は、別途図８に示すフローチャートにより説明する。
【００２７】
図３に示す例では、内部フレーム２上の描画パネル２１に対して描画が指示されたものとする。そのとき、可視矩形領域として、図２に示す矩形２８と矩形２９がＬ１１から所得される。
【００２８】
次に、Ｌ１１から可視矩形要素Ｒ１１を取得し（Ｓ１２）、描画対象矩形Ｒ１と重複しているか否かを判定する（Ｓ１３）。
【００２９】
例では、可視矩形要素Ｒ１１は、Ｌ１１から取得される矩形２８と矩形２９であり、描画対象矩形Ｒ１は、描画パネル２上の矩形２２である。
【００３０】
この判定処理は、Rectangleクラスのintersectsメソッドでおこなう。
【００３１】
Ｒ１とＲ１１が重複している場合、Ｒ１とＲ１１の重複矩形Ｒ１２を取得する（Ｓ１４）。この取得処理はRectangleクラスのintersectionメソッドでおこなう。
【００３２】
この例では、図２に示す矩形２８と矩形２２の重複矩形として矩形２３が、また、矩形２９と矩形２２の重複矩形として矩形２４が所得される。
【００３３】
次に、ＪＲＥにＲ１２への描画指示をおこなう（Ｓ１５）。
【００３４】
そして、Ｓ１２〜Ｓ１５の処理をＬ１１の要素が無くなるまで繰り返す（Ｓ１６）。
【００３５】
これにより、描画パネル２１上の矩形２３と矩形２４のみが表示される。
【００３６】
次に、図８により図７のＳ１１のサブルーチンの処理について説明する。
図８は、図７に示す処理のサブルーチンであり、指定したＧＵＩ部品が画面上で可視である矩形領域のリストを返す処理を示すフローチャートである。
【００３７】
先ず、呼び出し元から入力パラメータとしてＧＵＩ部品Ｃ２１が渡される（Ｓ２１）。この例では、パラメータとして描画パネル２１が渡される。
【００３８】
次に、Ｃ２１の親内部フレームＦ２１を取得する（Ｓ２２）。この取得処理はComponentクラスのgetParentメソッドでおこなう。この例では、描画パネル２１の内部フレーム２が取得される。
【００３９】
次に、Ｆ２１の前面に表示されている内部フレームのリストＬ２１を取得する（Ｓ２３）。この例では、描画パネル２１の内部フレーム２の前面に表示されている内部フレームは、内部フレーム３であり、これがリストＬ２１に入っている。
【００４０】
この処理の詳細は、別途図９に示すフローチャートで説明する。
【００４１】
次に、空のリストＬ２２を作成し（Ｓ２４）、初期値としてＣ２１の矩形Ｒ２１を追加する（Ｓ２５）。この例では、描画パネル２１上の全面の矩形がＬ２２に追加される。
【００４２】
次に、Ｌ２１から内部フレーム要素Ｆ２２を取得し（Ｓ２６）、Ｌ２２との非重複矩形のリストＬ２３を取得する（Ｓ２７）。この例では、内部フレーム要素Ｆ２２は、内部フレーム３であり、描画パネル２１上の全面の矩形との非重複となっている矩形は、矩形２８と矩形２９であり、これがリストＬ２３から所得される。
【００４３】
この処理の詳細は、別途図７に示すフローチャートで説明する。なお、内部フレーム要素Ｆ２２は、矩形のパラメータとしてサブルーチンに渡されて処理される。
【００４４】
次に、Ｌ２３を新たにＬ２２とする（Ｓ２８）。Ｓ２６〜Ｓ２８の処理をＬ２１の要素が無くなるまで繰り返す（Ｓ２９）。
【００４５】
最後に、呼び出し元にＬ２２を返す（Ｓ２Ａ）。これで、描画パネル２１上の矩形２８と矩形２９が返される。
【００４６】
次に、図９により図８のＳ２３のサブルーチンの処理について説明する。
図９は、図８に示す処理のサブルーチンであり、指定した内部フレームの前面に表示されている内部フレームのリストを返す処理を示すフローチャートである。
【００４７】
先ず、呼び出し元から入力パラメータとして内部フレームＦ３１が渡される（Ｓ３１）。この例では、内部フレーム２が渡される。
【００４８】
次に、空のリストＬ３１を作成する（Ｓ３２）。
【００４９】
次に、Ｆ３１からデスクトップ区画Ｄ１を取得する（Ｓ３３）。この例では、デスクトップ区画１１が取得される。この処理はJInternalFrameクラスのgetDesktopPaneメソッドでおこなう。
【００５０】
次に、Ｄ１から配下の全内部フレームのリストＬ３２を取得する（Ｓ３４）。この処理は、JDesktopPaneクラスのgetAllFramesメソッドでおこなう。この例では、デスクトップ区画１１の内部フレームは、内部フレーム２と内部フレーム３であり、これがリストＬ３２に含まれている。
【００５１】
次に、Ｌ３２から内部フレーム要素Ｆ３２を取得し（Ｓ３５）、Ｆ３１と同一であるか否かを判定し（Ｓ３６）、同一であればＳ３Ａに抜ける。これは、Ｌ３２から取り出したのが内部フレーム２の場合である。
【００５２】
同一でなければＦ３２とＦ３１のレイヤ番号を比較する（Ｓ３７）。レイヤ番号の取得は、JInternalFrameクラスのgetLayerメソッドでおこなう。Ｆ３２のレイヤ番号がＦ３１よりも小さければＦ３２はＦ３１の背面に表示されているので、Ｓ３Ａに抜ける。
【００５３】
次に、Ｆ３２のレイヤ番号がＦ３１と同じ、かつＦ３１よりレイヤ内位置番号が大きいか否かを判定する（Ｓ３８）。レイヤ内位置番号の取得はJDesktopPaneのgetPositionメソッドでおこなう。Ｆ３２のレイヤ番号がＦ３１と同じ、かつＦ３１よりレイヤ内位置番号が大きければ、Ｆ３２はＦ３１の背面に表示されているので抜ける。
【００５４】
次に、この時点でＦ３２がＦ３１の前面に表示されていることが確定したのでＬ３１にＦ３２を追加する（Ｓ３９）。この例では、内部フレーム３が内部フレーム２の前面に表示されることに対応して、リストＬ３１に内部フレーム３が追加される。
【００５５】
そして、Ｓ３５〜Ｓ３９の処理をリストＬ３２の要素が無くなるまで繰り返す（Ｓ３Ａ）。最後に、呼び出し元にリストＬ３１を返す（Ｓ３Ｂ）。
【００５６】
これにより、この例では、内部フレーム３が含まれるリストが返される。
【００５７】
次に、図１０により図８のＳ２７のサブルーチンの処理について説明する。
図１０は、図８に示す処理のサブルーチンであり、指定した矩形と矩形リストの非重複矩形のリストを返す処理を示すフローチャートである。
【００５８】
先ず、呼び出し元から入力パラメータとして矩形Ｒ４１と矩形リストＬ４１が渡される（Ｓ４１）。
【００５９】
この例では、矩形Ｒ４１として、内部フレーム３を矩形化したパラメータとして、また、リストには、描画パネル２１の全面の矩形が含まれるリストが渡される。
【００６０】
次に、空のリストＬ４２を作成する（Ｓ４２）。次に、Ｌ４１から矩形要素Ｒ４２を取得し（Ｓ４３）、Ｒ４１と重複しているか否かを判定する（Ｓ４４）。重複していなければ、Ｌ４２にＲ４２をそのまま追加する（Ｓ４７）。
【００６１】
重複していれば、Ｒ４１とＲ４２の非重複矩形リストＬ４３を取得する（Ｓ４５）。この取得処理は、SwingUtilitiesクラスのcomputeDifferenceメソッドでおこなう。この例では、内部フレーム３の矩形と描画パネル２１の全面の矩形との重複していない矩形として、矩形２８、矩形２９が求まり、これが非重複矩形リストＬ４３に含まれている。
【００６２】
次に、Ｌ４２にＬ４３の全矩形要素を追加する（Ｓ４６）。
【００６３】
そして、Ｓ４３〜Ｓ４７の処理をリストＬ４１の要素が無くなるまで繰り返す（Ｓ４８）。最後に、呼び出し元にリストＬ４２を返す（Ｓ４９）。
【００６４】
これにより、この例では、非重複矩形リストとして矩形２８、矩形２９の含まれるリストが返される。
【００６５】
以上説明したように、本発明により内部フレームが重なった際の前面の内部フレームの再描画処理が無くなるため、描画速度の劣化が回避される。
【図面の簡単な説明】
【００６６】
【図１】本発明の描画制御方法を説明するために、描画パネル上の矩形の関係を示した概観図である（その一）。
【図２】本発明の描画制御方法を説明するために、描画パネル上の矩形の関係を示した概観図である（その二）。
【図３】内部フレームを使用したＭＤＩ画面の概観図である。
【図４】従来技術の描画制御方法を説明するために、描画パネル上の矩形の関係を示した概観図である
【図５】本発明の描画制御方法を実行するためのハードウェア構成図である。
【図６】本発明の描画制御方法を実行するためのソフトウェア構成図である。
【図７】本発明の描画制御方法により、描画パネルを表示する処理を示すフローチャートである。
【図８】図７に示す処理のサブルーチンであり、指定したＧＵＩ部品が画面上で可視である矩形領域のリストを返す処理を示すフローチャートである。
【図９】図８に示す処理のサブルーチンであり、指定した内部フレームの前面に表示されている内部フレームのリストを返す処理を示すフローチャートである。
【図１０】図８に示す処理のサブルーチンであり、指定した矩形と矩形リストの非重複矩形のリストを返す処理を示すフローチャートである。
【符号の説明】
【００６７】
１…親ウィンドウ
２…内部フレーム
１１…デスクトップ区画
２１，３１…描画パネル
２２…描画対象矩形
２３，２４…矩形２２の描画指示がされたときに、本実施形態で実際に描画される矩形
２８，２９…描画パネル２１と描画パネル３１との非重複矩形として取り出される矩形
３２…矩形２２の描画指示がされたときに、従来技術によって、描画パネル３１上に再描画される矩形
【図１】
2007219919.tif 000003
【図２】
2007219919.tif 000004
【図３】
2007219919.tif 000005
【図４】
2007219919.tif 000006
【図５】
2007219919.tif 000007
【図６】
2007219919.tif 000008
【図７】
2007219919.tif 000009
【図８】
2007219919.tif 000010
【図９】
2007219919.tif 000011
【図１０】
2007219919.tif 000012