2017-08-01 1 views
-1
  1. J'ai pris un JFrame. J'ai ajouté Canvas au cadre. J'ai ajouté JToolbar au cadre. J'ai ajouté StatusBarPanel (s'étend JPanel) à la trame.Options JCombobox se trouvant derrière la toile

  2. Barre d'outils intérieure J'ai ajouté une zone de texte, un bouton et 3 zones de liste déroulante.

Maintenant, chaque fois que j'écris quelque chose dans la boîte de texte, puis cliquez sur zones de liste déroulante, les zones de liste déroulante ouvrir, mais le contenu est caché derrière la toile. Sinon, chaque fois que je n'écris rien dans la zone de texte et que je clique sur les listes déroulantes, les listes déroulantes s'ouvrent très bien.

Comment résoudre ce problème? (Je travaille sur 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

Mettez à jour votre question avec le code minimum qui reflète votre problème. En fin de compte –

+1

* "J'ai ajouté' Canvas' au cadre. "* Pourquoi? Pourquoi ne pas simplement utiliser un autre' JPanel'? Cela ressemble à un problème de mélange léger (par exemple Swing) et les composants lourds (par exemple AWT), mais nous devrions d'abord savoir si cela est vraiment nécessaire –

+2

@BranislavLazic Notez que '[mcve]' dans un commentaire se développe automatiquement en [mcve] –

Répondre

-1

@AndrewThompson Selon votre lien, cela signifie que je ne devrais pas utiliser de la toile avec Jframe.

Je vous partage la capture d'écran de la question: enter image description here

Pourquoi les options de combobox cacher qui se passe, que quand je « type » dans le JTextField ?? Quand je ne tapez rien, les comboboxes ouvrir bien :(

Outre le changement de toile à JPanel, est-il pas d'autre solution ??