2010-03-29 8 views
0

J'ai deux panneaux:panneaux enfants Positionnement à l'aide FlowLayout

  • main_panel
  • child_panel

La mise en page main_panel est réglé à l'aide:

main_panel.setLayout(flowlayout) 

J'ai ensuite ajouté child_panel à main_panel :

main_panel.add(child_panel) 

Le child_panel est ajouté à main_panel mais sa position est à la section transversale du point médian horizontal et vertical section supérieure de l'écran. Je veux child_panel être dans le coin supérieur gauche, quelque chose que j'aurais pu faire en utilisant child_panel.setlocation(a,b) méthode, si j'ai mis la mise en page de main_panel comme null.

Je l'ai utilisé FlowLayout ici parce que je veux les composants du JPanel pour maintenir ajuster la taille de JFrame.

Alors puis-je ajouter à child_panelmain_panel à l'endroit exact que je veux, même si je mets le Layout de ne pas main_panelnull?

Répondre

1

Je recommanderais d'utiliser GridPanelLayout pour votre cas - vous pouvez définir l'élément à être en position de grille (0,0) et le mettre à remplir horizontal et vertical, qui le fera à l'échelle de la taille. Vous pouvez ensuite suivre les directives d'aspect et de toucher pour obtenir les marges appropriées et autres.

1

Que pensez-vous de cela?

import java.awt.FlowLayout; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class Test { 
    public static void main(String[] args) { 
     JFrame f = new JFrame("Test"); 
     JPanel main = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
     JPanel child = new JPanel(); 
     child.add(new JLabel("Label")); 
     main.add(child); 
     f.getContentPane().add(main); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.pack(); 
     f.setVisible(true); 
    } 

} 
0

Dans ce cas j'utiliserais SpringLayout, il vous donne la possibilité de placer exactement les côtés de votre panneau (NORD, SUD, OUEST, EST) avec les côtés de tout autre composant (dans votre cas le panneau principal)

This tutorial clarifier ce que je dis