2010-12-06 11 views
1

Ou peut-être mon JPanel ne comparaît pas du tout.pourquoi mon bouton sur mes pas apparaître JPanel - Java

Je suis en train d'avoir un JPanel au bas de l'écran qui détiennent plusieurs boutons. Quelqu'un peut-il me mettre dans le détroit?

public class MyAWTMenu extends java.awt.Frame// implements ActionListener 
{ 
public void init() { 
setBackground(Color.white); 
JPanel bottom = new JPanel(); 
    bottom.setBackground(Color.BLACK); 
    JButton b1 = new JButton("test"); 
b1.setVisible(true); 
    bottom.add(b1); 
    bottom.setVisible(true); 
    add(bottom,BorderLayout.CENTER); 
} 
public static void main(String args []) { 

    MyAWTMenu objAppFrame = new MyAWTMenu(); 

    objAppFrame.addWindowListener(  //Register an anonymous class as a listener. 
     new WindowAdapter() { 
      public void windowClosing(WindowEvent e) 
      { 
       System.exit(0); 
      } 
     } 
    ); 
    objAppFrame.init(); 
    objAppFrame.setSize(760, 378); 
    objAppFrame.setVisible(true);      

    } 
+0

rien ne montre, pas un panneau noir vide, rien. Si je n'utilise pas un panneau et que j'ajoute juste le bouton directement, il remplit tout l'écran – kralco626

+0

n'ajoutez-vous pas de panneau à lui-même? ou il peut être trop tard pour aujourd'hui :) oui, il est trop tard (formatage m'a confondu) –

+0

Je ne pense pas parce que la classe se prolonge cadre, il faut donc ajouter (panneau) serait this.add (panneau) qui serait en l'ajoutant au cadre. Je pense - modifier: haha ​​désolé pour le formatage, il est difficile de mettre en forme avec cette chose – kralco626

Répondre

3

je ferais mieux de le réécrire comme suit:

public class FooFrame extends JFrame { 

    public FooFrame() { 

     // your code, copy/pasted 
     setBackground(Color.white); 
     JPanel bottom = new JPanel(); 
     bottom.setBackground(Color.BLACK); 
     JButton b1 = new JButton("test"); 
     bottom.add(b1); 
     add(bottom, BorderLayout.CENTER); 

     // set size & pack 
     Dimension size = new Dimension(400, 400); 
     setPreferredSize(size); 
     setMinimumSize(size); 
     pack(); 
     setLocationRelativeTo(null); 
    } 

    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new FooFrame().setVisible(true); 
      } 
     }); 
    } 
} 
+0

de barti en utilisant jframe plutôt que le cadre a résolu mes problèmes, cependant, en utilisant votre solution, le cadre apparaît vraiment très petit dans le coin supérieur gauche de l'écran. – kralco626

+0

haha, ma mauvaise, ça marche parfait! Merci beaucoup! – kralco626

+0

J'ai ajouté le réglage de taille et d'emplacement min, btw. –

1

add(bottom,BorderLayout.SOUTH); dans votre init()

Voici votre code que je courais. Cela semble fonctionner correctement pour moi. Je l'ai fait ajouter un appel à pack();

 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import javax.swing.JButton; 
import javax.swing.JPanel; 

public class MyAWTMenu extends java.awt.Frame// implements ActionListener 
{ 

    public void init() { 
     setBackground(Color.white); 
     JPanel bottom = new JPanel(); 
     bottom.setBackground(Color.BLACK); 
     JButton b1 = new JButton("test"); 
     bottom.add(b1); 
     bottom.setVisible(true); 
     add(bottom, BorderLayout.SOUTH); 
     pack(); 
    } 

    public static void main(String args[]) { 

     MyAWTMenu objAppFrame = new MyAWTMenu(); 

     objAppFrame.addWindowListener(//Register an anonymous class as a listener. 
       new WindowAdapter() { 

      public void windowClosing(WindowEvent e) { 
       System.exit(0); 
      } 
     }); 
     objAppFrame.init(); 
     objAppFrame.setSize(760, 378); 
     objAppFrame.setVisible(true); 

    } 
} 
 
+0

non. même effet – kralco626

+0

Désolé, lisez votre mauvaise question, essayez les changements ci-dessus. Cela ajoutera un panneau noir avec un bouton au bas de votre cadre. – user489041

+0

.South .center il n'a pas d'importance, ne fait rien ... – kralco626