- - PR -
JPopupMenuが枠しか表示されない
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-05 23:12
はじめまして。ゆうぎりと言います。
Javaをはじめたばかりの初心者です。 よろしくお願いします。 困っていることは、JPopupMenuの一部がJFrameからはみ出す時、薄いグレーの四角が 表示されるだけで、文字が出ないことです。マウスでなぞると文字が出てきます。 JFrameは、JSplitPane2つで、3つに分割しています。 JSplitPaneは、JPanel2つとJList1つです。それぞれにJScrollPaneがあります。 JPopupMenuは、JListのイベントで表示するようにしています。 list.addMouseListener(new MouseAdapter(){ public void mouseReleased(MouseEvent ev){ if(ev.isPopupTrigger()){ popup.show(ev.getComponent(),ev.getX(),ev.getY()); } } }); 上記popupは、 public void createPopupMenu(){ popup=new JPopupMenu(); JMenuItem setting=new JMenuItem("設定"); JMenuItem create=new JMenuItem("作成"); JMenuItem copy=new JMenuItem("コピー"); JMenuItem paste=new JMenuItem("貼り付け"); JMenuItem delete=new JMenuItem("削除"); popup.add(setting); popup.add(new JSeparator()); popup.add(create); popup.add(new JSeparator()); popup.add(copy); popup.add(paste); popup.add(delete); } 表示することに躓いてイベント処理はまだです。 よろしくお願いします。 | ||||
|
投稿日時: 2005-07-06 08:47
JPopupMenu#pack()
上記メソッドをadd処理が終わった後に追記してみてはいかがでしょうか? ※URLが間違っていたので修正しました。 [ メッセージ編集済み 編集者: MARU 編集日時 2005-07-06 08:48 ] | ||||
|
投稿日時: 2005-07-06 09:10
ゆうぎりさん、こんにちは。
ゆうぎりさんのコードをそのままに足りないところだけを補って 試してみましたが、問題は発生しませんでしたよ。 | ||||
|
投稿日時: 2005-07-06 09:48
unibon です。こんにちわ。
「マウスでなぞる」とは、マウスポインタ(マウスカーソル)をそこに動かすだけで描画が変わるのでしょうか?(それともマウスでなにか別のウィンドウをドラッグして動かすと、ということでしょうか?) もしマウスだけでなるとすれば、ビデオドライバー絡みの問題のような気がします。もし Windows だったら、ハードウェアアクセラレータをオフにするなどしてみてはどうでしょうか。また、別のウィンドウが重なった後に重なりがなくなったら描画される、という場合は起動時に -Dsun.java2d.noddraw=true を指定すると良いかもしれません。 また、もし可能なら、別の PC でも動かしてみることもお勧めします。 #以下、あとで追加。 再現する完全なソースコードがあると切り分けしやすいかもしれません。また、 menuBarのフロント表示について http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22592&forum=12 のようなことはないでしょうか。 [ メッセージ編集済み 編集者: unibon 編集日時 2005-07-06 09:51 ] | ||||
|
投稿日時: 2005-07-06 13:42
たしか、JPopupMenu はメニューがウィンドウの内側の時にはLightWeight(OSのウィンドウを使わずに)として、
ウィンドウからはみ出る場合にはHeavyWeight(OSのウィンドウを使って)として作られていたと思います。 はみ出るかどうかによって作られ方が違います。 Swingのバグと思われます。Javaのバージョンはいくらでしょうか? Javaのバージョンを上げて試してみてください。 あるいは以下のようにして、常にHeavyWeightとして作るようにすればうまくいくかも知れません。 popup.setLightWeightPopupEnabled(false); | ||||
|
投稿日時: 2005-07-07 00:05
ご返答ありがとうございます。
MARUさんに教えていただいた popup.pack(); a-sanさんに教えていただいた popup.setLightWeightPopupEnabled(false); をしてみましたが、フレームから出る部分があると枠のみの表示になりました。 バージョンは、j2sdk1.4.2_08 です。OSは、Windows.XP Service Pack2 です。 unibonさんの言われるハードウェアアクセラレータをオフにするというのはどうすればいいのでしょうか? マイコンピューターのヘルプでは見つかりませんでした。操作方法を教えていただけないでしょうか。 描画はマウスポインタを動かすだけで変わります。 別のPCでは、週末にはできるのでやってみたいと思います。 再現できる完全なコードですが、メインとなるファイルが500行くらいで、実行時にmdbファイルから データーを取り込んでいて、そのデーターをリスト表示しています。 今困っていることにどの部分が必要なのかよくわからないんです。 クラスのファイルを一旦削除してコンパイルしてみると、メインとなるクラスのファイルが10個できたんですが 根本の作りがおかしいということでしょうか? import のあと public class training_11{ で始まるのですが、training11$1、 training11$2・・training11$10 までできています。 Trail:Creating a GUI with JFC/Swing: Table of ContentsのHow to...を見て 同じように作ったつもりなのですが。 menuBarのフロント表示について http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22592&forum=12 ですが、J が付けば軽量だと思っていました。 JFrame、JSplitPane、JPanel、JList、JScrollPane、JDialgを使っています。 問題ありでしょうか? [ メッセージ編集済み 編集者: ゆうぎり 編集日時 2005-07-07 00:12 ] | ||||
|
投稿日時: 2005-07-07 08:51
恥ずかしながら、私が試したサンプルコードを示します。
DBもアクセスしませんし、クラス名も実行環境もゆうぎりさんのと違いますが。
Win98, 2000で試しました。 [ メッセージ編集済み 編集者: Kissinger 編集日時 2005-07-07 08:52 ] | ||||
|
投稿日時: 2005-07-07 12:41
こちらは、J2SE1.4.2_01、Win2000ですが問題なかったです。
SwingとAWTのコンポーネントを混在させてませんか? |
1|2|3
次のページへ»