JCombobox选项后面的画布

问题描述:

  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] –

@AndrewThompson根据你的链接,这意味着我不应该使用画布的JFrame。

我分享你的问题的截图: enter image description here

为什么组合框中选择躲在发生,只有当我在JTextField中的“类型”? 当我不输入任何内容,该组合框开拓以及:(

除了改变画布的JPanel,有没有其他解决办法?