2017-08-01 25 views
-1
  1. 我已採取JFrame。 我加了Canvas到框架。 我在框架中添加了JToolbar。 我將StatusBarPanel(擴展爲JPanel)添加到框架。JCombobox選項後面的畫布

  2. 內部工具欄我添加了一個文本框,一個按鈕和3個組合框。

現在,每當我寫在文本框中的東西,然後點擊組合框,組合框打開,但內容都隱藏在畫布後面。

否則,只要我不在文本框中寫入任何內容並單擊組合框,組合框就會打開。

如何解決這個問題? (我工作的java 8)

Inside class MyFrame extends JFrame{ 
    ..... 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    setSize(screenSize.width - 60, screenSize.height); 

    Canvas canvas = new Canvas(); 
    canvas.setFocusable(true); 
    canvas.setBackground(Color.darkGray); 
    add(canvas); 

    MyToolbar myTb = new MyToolbar(myfr); 
    myTb.initialize(); 
    ..... 
} 

Inside class MyToolbar extends JToolbar{ 
    ..... 
    MyToolbar(MyFrame myframe){ 
     toolbar = new JToolBar("My Toolbar"); 
     toolbar.setBorder(new EmptyBorder(new Insets(8,8,8,8))); 
     this.myframe = myframe; 
    } 

    void initialize(){ 
     JTextField textField = new JTextField("Write something...");   
     toolbar.add(textField); 

     toolbar.addSeparator(); 

     JComboBox<String> jComboBox = new JComboBox<String>(new String[] { "abc" }); 
     jComboBox.setSize(40, 20); 
     toolbar.add(jComboBox); 

     this.myframe.add(toolbar, BorderLayout.NORTH); 
    } 
..... 
} 
+1

更新了反映您的問題最少的代碼你的問題。到底,這是你的興趣儘可能得到最好的答案 –

+1

*「我添加了Canvas'框架。」*爲什麼?爲什麼不簡單地使用另一個'JPanel'?這聽起來像是混合輕量級問題(例如Swing) &重量級(例如AWT)組件,但首先我們應該知道是否真的有必要這樣做 –

+2

@BranislavLazic請注意,註釋中的[mcve]會自動擴展到[mcve] –

回答

-1

@AndrewThompson根據你的鏈接,這意味着我不應該使用畫布的JFrame。

我分享你的問題的截圖: enter image description here

爲什麼組合框中選擇躲在發生,只有當我在JTextField中的「類型」? 當我不輸入任何內容,該組合框開拓以及:(

除了改變畫布的JPanel,有沒有其他解決辦法?