2013-07-11 4 views
0

Salut est-ce que quelqu'un sait pourquoi mon "bouton1" ne s'affiche pas? Je ne peux pas sembler comprendre quand j'exécute le programme tout fonctionne et fonctionne avec succès mais il n'affiche pas ce bouton. Toute aide serait appréciée Merci.JButton n'affiche pas

private Container c; 
private JPanel gridPanel; 
private JComboBox combo; 
final JLabel label = new JLabel(); 
private JButton button1 = new JButton("Clear"); 
private JButton button2 = new JButton("Exit"); 

/** 
* Christopher Haddad - 559815X 
*/ 
public Planets() { 
    c = getContentPane(); 
    gridPanel = new JPanel(); 
    gridPanel.setLayout(new GridLayout(5, 0, 0, 0)); 

    label.setVisible(true); 

    combo = new JComboBox(); 
    combo.setEditable(false); 
    combo.addItem("No Planet Selected"); 
    combo.addItem("Mercury"); 
    combo.addItem("Venus"); 
    combo.addItem("Earth"); 
    gridPanel.add(combo); 

    add(button1); 
    add(button2); 
    button1.addActionListener(this); 
    button2.addActionListener(this); 

    c.add(gridPanel, BorderLayout.NORTH); 
    setTitle("Planet Diameter"); 
    setSize(700, 250); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 

    combo.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent event) { 

      JComboBox comboBox = (JComboBox) event.getSource(); 

      Object select = comboBox.getSelectedItem(); 

      if(select.toString().equals("No Planet Selected")) 
       label.setText(""); 
      else if(select.toString().equals("Mercury")) 
       label.setText("The planet Mercury is 3100kms in diameter"); 
      else if(select.toString().equals("Venus")) 
       label.setText("The planet Venus is 7500kms in diameter"); 
      else if (select.toString().equals("Earth")) 
       label.setText("The planet Earth is 8000kms in diameter"); 

     } 
    }); 
    getContentPane().add(combo); 
    getContentPane().add(label); 
} 

    // event handling method, implementing the actionPerformed method of ActionListener 
    public void actionPerformed(ActionEvent e) 
    { 
     // set the button label to number of times it has been clicked 
     if(e.getSource() == button1) { 
      label.setText(" "); 
     } 
     else if(e.getSource() == button2) { 
      System.exit(0); 
     } 
    } 
+0

Qu'à cela ne tienne, a résolu, grâce – thechrishaddad

+0

il est la cause de votre mise en page, retirez le poteau puis xD – nachokk

+0

IIRC seuls les modérateurs peuvent supprimer les messages. – mattbdean

Répondre

3

Il est difficile d'être sûr, mais je suppose vous ajoutez du contenu directement sur un conteneur de niveau supérieur, comme un JFrame

JFrame utilise un BorderLayout comme il est gestionnaire de mise en page par défaut, donc l'utilisation

add(button1); 
add(button2); 

dit Basially, addbutton1 à la position CENTER puis addbutton2 à la position CENTER. BorderLayout permet uniquement à un seul composant d'exister à un emplacement spécifique.

Essayez d'ajouter des boutons à un autre premier panneau ...