2013-01-07 1 views
1

J'ai deux Panneaux et je veux qu'ils soient montrés dans mon JFrame, mais quand je l'essaye comme ceci, je peux seulement voir le second. Quelqu'un peut-il m'aider s'il vous plaît? :(Deux panneaux dans un JFrame?

import javax.swing.JFrame; 

public class MainWindow { 

CardLayout layout; 
JFrame frame; 
Player panel1; 
Block panel2; 

public MainWindow() { 
    frame = new JFrame("Rechteck"); 
    panel1 = new Player(); 
    panel2 = new Block(); 
    panel1.addKeyListener(new KeyListen(panel1)); 
    frame.add(panel1); 
    frame.add(panel2); 
    frame.setSize(500,500); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
}} 
+1

Voir aussi [* Initial Threads *] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html). – trashgod

Répondre

1

Créer un JPanel ajouter que la JFrame. Ajouter panel1 et panel2 au nouveau panneau. JFrame ne peut avoir qu'un seul enfant, habituellement mis en appelant JFrame.setContentPane().

+2

'JFrame' est un conteneur, techniquement, il pourrait avoir un nombre quelconque d'enfants (et en fait c'est le cas). L'implémentation de 'JFrame' redirige les appels vers' add' et 'remove' (et d'autres méthodes de gestion de conteneur) vers le volet de contenu. Vous pouvez simplement changer le gestionnaire de disposition à quelque chose comme 'GridLayout' à la place. Il n'y a pas besoin de troisième volet - IMHO – MadProgrammer

4

Vous avez ajoutée à la fois vos panneaux au BorderLayout.CENTER de votre JFrame — que l'on peut occuper cet emplacement ,. ce sera le dernier ajouté, panel2 dans ce cas

pour permettre aux panneaux occupent l'espace de façon uniforme, vous pouvez utiliser GridLayout.:

frame.setLayout(new GridLayout(2, 1)); 

En plus: Mieux vaut utiliser Key Bindings lors de l'enregistrement des événements clés pour les composants Swing.

+0

merci. mais il y a toujours un problème: il y a 2 parties de la trame pour chaque panneau –

+0

La disposition ci-dessus disposera 2 panneaux. Avez-vous plus? Aussi utilisez-vous ce CardLayout? Quelles sont les dispositions à l'intérieur des 2 panneaux? – Reimeus

Questions connexes