2011-09-13 43 views
2

當我點擊鼠標時,JMenu可以正常工作。當JTree具有焦點時,JMenu出現在JTree之後?

before

我點擊我的鼠標離開和消失(正常)。 然後我雙擊我的JTree中唯一的條目。

然後,當我點擊我的JMenu它看起來像這樣。它出現在JTree後面? after

當我調整窗口大小時,它會恢復正常。直到JTree再次聚焦。

這是我的代碼看起來像,我繼承一個JFrame,這代碼是在構造

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

你混合Swing和AWT組件。不要這樣做,因爲它會導致你面臨的問題。使用JScrollpane而不是ScrollPane

+0

+1嗯,但看起來像swing.JFrame v.s. awt.Frame,因爲從Java1.6_012允許http://java.sun.com/products/jfc/tsc/articles/mixing/和http://java.sun.com/developer/technicalArticles/GUI/mixing_components/ – mKorbel

+0

哈哈哦哇,我不敢相信我沒有在滾動窗格前鍵入J。 –