GridBagLayout et Component

GridBagLayout et Component - Java - Programmation

Marsh Posté le 20-11-2008 à 16:46:11    

Bonjour,
 
Pour un projet, j'ai besoin de créer une Map qui contienne des Case
 
J'ai donc fait une classe Case extends Component
 
Lorsque j'instancie ma Case et que je la visualise en la rajoutant directement à une JFrame, je la vois s'afficher correctement, bonne taille avec des images à l'intérieur.
 

Code :
  1. JFrame frame = new JFrame();
  2. Case c1 = new Case(1,10,true);
  3. frame.add(c1);
  4. frame.setSize(new Dimension(640,480));
  5. frame.setVisible(true);


 
Pour afficher la grille de Case, je veux utiliser un GridBagLayout. Je me suis chauffé en essayant de faire afficher une grille de JButton, ça passe tout seul.
En revanche, quand je veux faire afficher ma Grille de Case, ça se complique:

Code :
  1. JPanel panel = new JPanel();
  2. GridBagLayout layout = new GridBagLayout();
  3. panel.setLayout(layout);
  4. GridBagConstraints constraints=new GridBagConstraints();
  5. Case c1 = new Case(1,10,true);
  6. Case c2 = new Case(2,10,true);
  7. Case c3 = new Case(3,0,false);
  8. c1.setSize(new Dimension(Case.TAILLE,Case.TAILLE));
  9. c2.setSize(new Dimension(Case.TAILLE,Case.TAILLE));
  10. c3.setSize(new Dimension(Case.TAILLE,Case.TAILLE));
  11. constraints.gridx=0;
  12. constraints.gridy=0;
  13. layout.setConstraints(c1, constraints);
  14. panel.add(c1);
  15. constraints.gridx=1;
  16. constraints.gridy=0;
  17. layout.setConstraints(c2, constraints);
  18. panel.add(c2);


 
J'obtiens effectivement une grille mes toutes mes cases font 1 pixel!
 
à noter que si je reprends le code précédent et que j'essaie de mettre ma Case dans un JPanel, j'ai le même problème:

Code :
  1. JFrame frame = new JFrame();
  2. JPanel panel = new JPanel();
  3. panel.setLayoutManager(new FlowLayout())
  4. Case c1 = new Case(1,10,true);
  5. panel.add(c1);
  6. frame.add(panel);
  7. frame.setSize(new Dimension(640,480));
  8. frame.setVisible(true);


Reply

Marsh Posté le 20-11-2008 à 16:46:11   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed