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

[Java3Djp:01297] Re: JPopupMenu の heavyweight化



┏━◇新しい事始めたくなる2000年【みんなが使えるメーリングリスト】◇━┓

  ◆ 世界で一番簡単なメーリングリスト目指して http://mx7.dns-ml.co.jp/
   ◇ お陰様でベータテスト参加者が1万名を突破しました! m(..)m
    ◆ 安定性も既に証明済。新しく作るなら新システムで開設して下さい!

┗━◇━ DNSホームページはこちら → http://mx7.dns-ml.co.jp/ ━◇━┛

小池です。

私もJFrameにCanvas3Dを張りつけてみたことがあります。
(そのときはSwingによるGUIの反応の低下が嫌で、結局は
やめてしまいましたが)。

At 21:44 00/01/26 +0900, Itoh Miho wrote:

> 伊藤です。
> こんにちは。
> 
> Canvas3DをSwingで使用したいので [Java3Djp:00653] Re: Swing 
> を参考にメニューをheavyweight化してみようとしたのですがうまく
> 行きません。
> フレームを作成した後に
>   
>     JPopupMenu.setDefaultLightWeightPopupEnabled(false);
> 
> とやっているのですが すぐにtrueになってしまいます。
> タイミングが悪いのでしょうか? 

そうだと思います。

setDefaultLightWeightPopupEnabled()は単純に、JPopupMenuに
staticに保持されているデフォルト設定を変更するものでしょう。
(未確認の想像です。)

したがって、インスタンスを作成する前に呼ぶべきだと思います。

> public class PopupTest{
> 
>   //アプリケーションの構築
>   public PopupTest() {
>     //JFrame作成
>     JFrame frame = new JFrame();
> 
>     //メニュー作成
>     JMenuBar menuBar = new JMenuBar();
>     JMenu menu = new JMenu();
>     JMenuItem menuItem = new JMenuItem();

(省略)

>     //heavyweight に設定:1
>     menu.getPopupMenu().setDefaultLightWeightPopupEnabled(false);
>     System.out.println("lightweight? 1: "
> 	+menu.getPopupMenu().isLightWeightPopupEnabled());
> 
>     //heavyweight に設定:2
>     JPopupMenu.setDefaultLightWeightPopupEnabled(false);
>     System.out.println("lightweight? 2: "
> 	+menu.getPopupMenu().isLightWeightPopupEnabled());
> 
>     frame.setVisible(true);
>   }
> 
> 
>   //Main メソッド
>   public static void main(String[] args) {
>     new PopupTest();
>   }
> }

setDefaultLightWeightPopupEnabled()は、遅くともメニューを
作る前に行うべきでしょう。私個人の好みで言えば、後から
変更する必要の無い(かつされるべきで無い)staticな属性の
設定は、mainの先頭あたりがいいと思いますが。

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

デフォルト値がどう設定されているかは、staticメソッドの
setDefaultLightWeightPopupEnabled()で調べられます。


以下、ちょっと話がずれるのですが・・。

冒頭に書いたように、私はパフォーマンスの点から結局
Canvas3DをJFrameに張るのはやめています。しかし、より
使いやすいインターフェースを作ろうと思うと、やはり
Swingにはおおいに未練があります。

JDK1.3では、クライアント用HotSpotのためもあって、Swingの
性能が大幅に良くなっていると聞きます(ObjectDesign社の人の
コメントとして、「ついにネイティブコードのGUIと遜色無く
動くようになった」というような文を読みました)が、
Java3Dとの相性はどうなのでしょうか。

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



/* written by Koike,T. */