2011-09-13 6 views
2

JMenuはマウスでマウスをクリックすると正しく動作します。JTreeにフォーカスがあるときにJMenuがJTreeの後ろに表示されますか?

before

(ノーマル)私は離れて私のマウスをクリックして、それが消えます。 私はJTreeの唯一のエントリをダブルクリックします。

私のJMenuをクリックすると、次のようになります。それはJTreeの後ろに現れますか? after

ウィンドウのサイズを変更すると、通常の状態に戻ります。 JTreeに再度フォーカスが当たるまで。

これは私のコードは、私はJFrameのをサブクラスてるように見えると、このコードは、あなたがSwingとAWTの成分を混合しているコンストラクタ

Container cp = getContentPane(); 

//1. menu 
JMenuBar menu = new JMenuBar(); 
//... 

cp.add(menu, BorderLayout.NORTH); 

//2. split pane 
JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); 
//... 
{ 
    //3a. scrollpane (left) 
    ScrollPane treeView = new ScrollPane(); 
    treeView.setMinimumSize(new Dimension(0,0)); 
    sp.add(treeView, JSplitPane.LEFT); 
    { 
     //3ai. treeview 
     tree = new ObjectTree(); 
     treeView.add(tree); 
    } 

    //3b. scrollpane (right) 
    ScrollPane tabView = new ScrollPane(); 
    tabView.setMinimumSize(new Dimension(0,0)); 
    sp.add(tabView, JSplitPane.RIGHT); 
    { 
     //3bi tabview 
     ObjectTabPane view = new ObjectTabPane(); 
     tabView.add(view); 
    } 
} 

cp.add(sp, BorderLayout.CENTER); 
this.setSize(700, 500); 
+0

フォーカスを失ったときにメニューを実際に閉じてはいけませんか? – Thomas

+0

フォーカスを失ったときに閉じます。しかし、私がJtree上の唯一の項目をクリックしたら、メニューをもう一度クリックしてください。今メニューにはフォーカスがありますが、ツリーの背後にあります –

+0

JMenuBarはコンテンツペインに表示されません – Neifen

答えて

5

にあるものです。あなたが直面している問題につながるので、これをしないでください。 ScrollPaneではなくJScrollpaneを使用してください。

+0

+1 hmmm、swing.JFrame v.s.また、Java1.6_012からhttp://java.sun.com/products/jfc/tsc/articles/mixing/とhttp://java.sun.com/developer/technicalArticles/GUI/mixing_components/が許可されているため、awt.Frameも – mKorbel

+0

ああ、うわー、私はスクロールペインの前にJをタイプしなかったと信じられない。 –

関連する問題