2010-03-27 4 views
4

Nous travaillons sur un projet où nous avons rencontré un problème avec l'inclusion de plus de deux panneaux sur le même JFrame. Ce que nous voulons, c'est un panneau au-dessus de l'autre.Y compris plus de deux panneaux dans un JFrame?

Est-ce que la communauté peut aider à donner un exemple d'implémentation ou me référer à un bon tutoriel ou guide lié à nos besoins de Java Swing?

+0

Quel gestionnaire de disposition (FlowLayout, BorderLayout, GridLayout, GroupLayout, etc.) utilisez-vous dans votre cadre? –

Répondre

7

En supposant que vous voulez deux panneaux ajoutés à une seule image:

Définir une mise en page pour vos parents JFrame et ajoutez les deux panneaux. Quelque chose comme ce qui suit

JFrame frame = new JFrame(); 
//frame.setLayout(); - Set any layout here, default will be the form layout 
JPanel panel1 = new JPanel(); 
JPanel panel2 = new JPanel(); 
frame.add(panel1); 
frame.add(panel2); 

En supposant que vous souhaitez ajouter un panneau sur l'autre

JFrame frame = new JFrame(); 
JPanel panel1 = new JPanel(); 
JPanel panel2 = new JPanel(); 
frame.add(panel1); 
panel1.add(panel2); 

Il n'y a pas de limite sur le nombre de panneaux à ajouter sur la JFrame. Vous devez comprendre qu'ils sont tous des conteneurs lorsqu'ils sont vus à un niveau supérieur.

+0

mais le problème ici est que la mise en page par défaut est "FlowLayout" et cela ne lui donnera pas le résultat souhaité - Ok, j'ai mal lu la première partie de votre message, mais ce qui est désiré ici, c'est des mises en page très spécifiques. "Définir une mise en page" – Wintermut3

2

si vous voulez chacun des cadres/panneaux de la même taille, utilisez le GridLayout, avec une grille de 1 (colonne) et 2 (lignes)

Frame myFrame; 
GridLayout myLayout = new GridLayout(2,1); 

myFrame.setLayout(myLayout); 

Panel p1; 
Panel p2; 

myFrame.add(p1); 
myFrame.add(p2); 

si les panneaux sont différentes tailles utilisent BorderLayout .... définir le cadre supérieur à « Nord » et inférieur à « Sud » ou « Centre »

Frame myFrame; 

myFrame.setLayout(new BorderLayout()); 

Panel p1; 
Panel p2; 

myFrame.add(p1, BorderLayout.NORTH); 
myFrame.add(p2, BorderLayout.CENTER); 
2

// vous pouvez également utiliser la carte mise en page, qui vous permet d'ajouter plusieurs panneaux de cartes-sur Panneau principal.

CardLayout cl; 
JPanel main,one,two,three; 
JButton button1,button2; 

cl = new CardLayout(); 
main.setLayout(cl); 

main.add(one,"1"); 
main.add(two,"2"); 
main.add(three,"3"); 

cl.show(main,"1"); 

public void actionPerformed(ActionEvent e){ 
if(e.getSource() == button1) 
    cl.show(main,"2"); 
else if(e.getSource() == button2) 
    cl.show(main,"3"); 
}