[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:01302] Re: JPopupMenu の heavyweight化



-------------------------------------------------------------------
■ Vmailのご案内
   Vmailは2000年1月20日にスタートしたメールサービスです。
   あなたの興味にあわせて、企業からの情報をお届けします。
   http://www.vmail.ne.jp/link.cgi?via=JiJkM
-------------------------------------------------------------------

伊藤です。
回答ありがとうございます。

Tomohiro Koike wrote:
> At 21:44 00/01/26 +0900, Itoh Miho wrote:
> 
> > Canvas3DをSwingで使用したいので [Java3Djp:00653] Re: Swing
> > を参考にメニューをheavyweight化してみようとしたのですがうまく
> > 行きません。
> > フレームを作成した後に
> >
> >     JPopupMenu.setDefaultLightWeightPopupEnabled(false);
> >
> > とやっているのですが すぐにtrueになってしまいます。
> > タイミングが悪いのでしょうか?
> 
> そうだと思います。
> 
> setDefaultLightWeightPopupEnabled()は単純に、JPopupMenuに
> staticに保持されているデフォルト設定を変更するものでしょう。
> (未確認の想像です。)
> 
> したがって、インスタンスを作成する前に呼ぶべきだと思います。

確かにメニューをnewする前に
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
としてうまく行きました(^^)
ありがとうございました。

> ちなみに、isLightWeightPopupEnabled()はstaticメソッドでは
> ありません。つまり、これはそのインスタンスについてだけ
> light weightかどうかを調べるメソッドです。

改めてまじめに JPopupMenu のソースを読んだところ
コンストラクタの中で static な Default 設定の値を
private変数にコピーしていました。
だから、コンストラクト後に Default 設定を変更しても
インスタンスの設定は true のままだったんですね。
よく分かりました。
  
> 以下、ちょっと話がずれるのですが・・。
> 
> 冒頭に書いたように、私はパフォーマンスの点から結局
> Canvas3DをJFrameに張るのはやめています。しかし、より
> 使いやすいインターフェースを作ろうと思うと、やはり
> Swingにはおおいに未練があります。
> 
> JDK1.3では、クライアント用HotSpotのためもあって、Swingの
> 性能が大幅に良くなっていると聞きます(ObjectDesign社の人の
> コメントとして、「ついにネイティブコードのGUIと遜色無く
> 動くようになった」というような文を読みました)が、
> Java3Dとの相性はどうなのでしょうか。

そうなのですか。楽しみですね。

> 以前に、えんどうさんがテクスチャーか何かで問題が出たと
> おっしゃっていたようですが・・。

今回、あまり複雑なGUIを作る訳ではないので Swing採用
に踏み切りました。今のところテクスチャーも使わないです。

私も無難にAWTで作りたい気持ちもあるのですが、
Swingの格好よさは捨て難いものがあります。

---------------------
伊藤美穂
(株)数理システム
itoh@xxxxxxxxxx