Layout

Layout - Java - Programmation

Marsh Posté le 27-04-2004 à 19:06:35    

Bonjour !!
Je cherche a mettre 2 composants au centre d'un JPanel et l'un en dessous de l'autre.
J'ai essayé avec plusieurs layout (not le gridbaglayout mais impossible de centrer la chose) les deux composants sont un JLabel et un que j'ai fait moi méme et qui herite de JPanel.
si vous avez la solution merci. (j'ai cherché toute la journée en vain !!!! :pt1cable:


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 27-04-2004 à 19:06:35   

Reply

Marsh Posté le 27-04-2004 à 19:36:27    

hello,
 
j'ai commencé java il y a 2 semaines. Et il faut dire que c'ets vraiment pas évident au début. essaie de mettre dans un BoxLayout les 2 éléments  
 
http://java.sun.com/j2se/1.3/docs/ [...] ayout.html
 
je résume, un un BoyLayout, avec 2 Panel, qui chacun contient un Jlabel.
 
Je pense que d'autre pourront confirmer (ou pas)

Reply

Marsh Posté le 27-04-2004 à 20:04:59    

tout à fait, BoxLayout ; voir aussi la classe Box qui peut en faciliter l'utilisation.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 28-04-2004 à 05:35:49    

Code :
  1. panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS));
  2. JLabel label1 = new JLabel("Woot" );
  3. JLabel label2 = new JLabel("WootWoot" );
  4. label1.setAlignmentX(Component.CENTER_ALIGNMENT);
  5. label2.setAlignmentX(Component.CENTER_ALIGNMENT);
  6. //...


Reply

Marsh Posté le 28-04-2004 à 12:54:33    

J'ai testé ce code mais ca ne fonctionne pas.
Le JLabel est bien centré mais mon autre composant qui herite de JPanel est complétement a gauche.


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 28-04-2004 à 13:00:50    

bw_syl a écrit :

J'ai testé ce code mais ca ne fonctionne pas.
Le JLabel est bien centré mais mon autre composant qui herite de JPanel est complétement a gauche.

Les LayoutManager (en général) utilisent les méthodes getPreferredSize, getMinimumsize et getMaximumSize des composants pour les placer au mieux. Il faut peut-être que tu redéfinisse ces méthodes pour renvoyer les bonnes valeurs.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 28-04-2004 à 13:02:15    

jV voir dans cette direction mais ca risque de ne pas etre evident


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 28-04-2004 à 13:19:24    

copie ton code stp.  
tu veus dire que a la place de wootwoot tu as un jpanel ? et il ce centre pas ?

Reply

Marsh Posté le 28-04-2004 à 13:20:31    

oui c ca G un JPanel et il se centre pas.G pas le code la jlenvoie ce soir.
merci


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 28-04-2004 à 13:33:40    

ben ben utilise un border layout le jlabel au north et lautre au centre. mais cest bizarre que le center ne marhce pas pour le jpanel. normalement il herite de component non ?.

Reply

Marsh Posté le 28-04-2004 à 13:33:40   

Reply

Marsh Posté le 28-04-2004 à 20:10:56    

oui mais moi j'ai fait un autre composant en quelque sorte qui herite de JPanel


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 28-04-2004 à 20:40:14    

voici le code :
 

Code :
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class Moyenne extends JPanel{
  4.    
  5.     private String nomCarte;
  6.     private int jourNuit;
  7.     private String espece = "essai";
  8.     Moyenne(String nomCarte){
  9. this.nomCarte=nomCarte;
  10. this.construire();
  11.     }
  12.    
  13.     public void construire(){
  14. setLayout(new BoxLayout(this,BoxLayout.PAGE_AXIS));
  15. JLabel espece = new JLabel(aspece);
  16. CreerCarte tempCarte = new CreerCarte(nomCarte,jourNuit,0,1);
  17. Map affCarte = new Map(tempCarte.lectureCarte());
  18. espece.setAlignmentX(Component.CENTER_ALIGNMENT);
  19. affCarte.setAlignmentX(Component.CENTER_ALIGNMENT);
  20. add(espece);
  21. add(affCarte);
  22.     }
  23. }


 
puis :
 

Code :
  1. public class Map extends JPanel{
  2.     public static final int LON = 1016;
  3.     public static final int LAR = 648;
  4.     private float[] dessiner;
  5.     private int jour;
  6.     private int periode;
  7.     //private CreerCarte map;
  8.     private Moyenne map;
  9.     private int debut;
  10.     private int fin;
  11.     boolean zoom;
  12.     private int[] pos = new int[5];
  13.     private JButton button = new JButton("Print" );
  14.     public int xx[] = new int[100];
  15.     public int yy[] = new int[100];
  16.     Map(float[] tab){
  17. this.dessiner=tab;
  18.     }
  19.     Map(String nomCarte,int jour,boolean zoom,int debut,int fin){
  20. //this.nomCarte=nomCarte;
  21. this.jour=jour;
  22. this.zoom=zoom;
  23. this.debut=debut;
  24. this.fin=fin;
  25. addMouseListener(new Souris());
  26.     }
  27.     private float max(float[] tab){
  28. float max=0f;
  29. for(int i=0;i<tab.length;i++){
  30.     if(tab[i]!= Const.ONE && tab[i]!= Const.NOMESURE && tab[i]!= Const.SUPONE && tab[i]!= Const.NEVER){
  31.  if(tab[i]>max){
  32.  max = tab[i];
  33.  }
  34.     }
  35. }
  36. return max;
  37.     }
  38.     private float min(float[] tab){
  39. float min=99999999f;
  40. for(int i=0;i<tab.length;i++){
  41.     if(tab[i]!= Const.ONE && tab[i]!= Const.NOMESURE && tab[i]!= Const.SUPONE && tab[i]!= Const.NEVER && tab[i]>Const.NAN){
  42.  if(tab[i]<min){
  43.  min = tab[i];
  44.  }
  45.     }
  46. }
  47. return min;
  48.     }
  49.    
  50.    
  51.     public void allcarte(Graphics g){
  52. float coefx,coefy;
  53. if(zoom==false){
  54.     coefx = 1;//(float)(this.getSize().getWidth()/LON);
  55.     coefy = 1;//(float)(this.getSize().getHeight()/LAR);
  56. }else{
  57.     coefx=2;
  58.     coefy=2;
  59. }
  60. Terre fondTerre = new Terre();
  61. fondTerre.acquisition();
  62. Long longi = new Long();
  63. Bat200 bat = new Bat200();
  64. Bat4000 bat4 = new Bat4000();
  65. bat.lecture();
  66. bat4.lecture();
  67. float x=24;
  68. float yinit = 176;
  69. float y = yinit;
  70. float temp;
  71. Graphics2D g2 = (Graphics2D)g;
  72. g2.scale(1.0,1.0);
  73. //g.translate(20,20);
  74. //g2.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
  75. g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
  76. Formes f = new Formes();
  77. int parc = 0;
  78. //BarreCouleurs bar = new BarreCouleurs(map.getMax(periode,jour),map.getMin(periode,jour));
  79. BarreCouleurs bar = new BarreCouleurs(max(dessiner),min(dessiner));
  80. parc=0;
  81. pos[0]=(int)x;
  82. pos[1]=(int)y;
  83. for(int i=5;i<37;i++){
  84.     for(int j=2;j<26;j++){
  85.  temp=dessiner[i*26+j];
  86.  g.setColor(new Color(175,238,238));
  87.       g.fillRect((int)x,(int)y,7,7);
  88.       if(temp==-2222.0f){
  89.    g.setColor(new Color(175,238,238));
  90.    g.fillRect((int)x,(int)y,7,7);
  91.      }else{
  92.   if(temp==-5555.0){
  93.       f.losange(g,(int)x,(int)y,coefx,coefy);
  94.   }else{
  95.       if(temp==-9999.0f){
  96.    f.croix(g,(int)x,(int)y,coefx,coefy);
  97.       }else{
  98.        if(temp==-3333.0){
  99.     f.cercle(g,(int)x,(int)y,coefx,coefy);
  100.        }else{
  101.     if(temp==-1.0){
  102.       
  103.         g.setColor(new Color(175,238,238));
  104.         g.fillRect((int)x,(int)y,7,7);
  105.     }else{
  106.         g.setColor(bar.coul(temp));
  107.         g.fillRect((int)x,(int)y,7,7);
  108.     }
  109.       }
  110.       }
  111.   }
  112.      }
  113.     y-=7;
  114.     parc++;
  115.        }
  116.        y=(int)(yinit);
  117.        x+=7;
  118.    }
  119. pos[2]=(int)x;
  120. pos[3]=(int)(y-(25*7));
  121. pos[4]=periode;
  122. //longi.afficher(g,(int)(x-200),(int)y);
  123. //fondTerre.afficher(g,(int)x-258,(int)y);
  124. g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
  125. bat.afficher(g);
  126. fondTerre.afficher(g,0,0);
  127. longi.afficher(g);
  128. Lat lat = new Lat();
  129. lat.afficher(g);
  130. bat4.afficher(g);
  131. bar.barre(g);
  132. // if(periode==2){
  133. //      x=10;
  134. //      yinit+=(int)((300*coefy)+0.5);
  135. //      y=yinit;
  136. //  }else{
  137. //      x+=(int)((40*coefx)+0.5);
  138. //        }
  139. //if(periode==2){
  140. //yinit+=(int)((300*coefy)+0.5);
  141. //y=yinit
  142.     }
  143.     public void paintComponent(Graphics g){
  144. super.paintComponent(g);
  145. allcarte(g);
  146. ....


voila en gros c ca.


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 29-04-2004 à 00:05:17    

et si aulieu d etendre jpanel tu fesais un classe normal qui retourne un jpanel.
mais sinon je vois pas trop.

Reply

Marsh Posté le 29-04-2004 à 01:13:53    

j'utilise un vertical layout...ca les aligne verticalement en leur faisant prendre tt la largeur du containeur parent...et tu peux définir la marge entre 2 boites...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 29-04-2004 à 01:45:29    

comment tu fait ca


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 29-04-2004 à 01:46:54    

un vertical layout je veu dire comment tu fait?
ca marchera ac mon cas ?
Je fait un truc qui herite de JPanel pour le faire réafficher automatiquement c'est pas nécessaire ?


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 29-04-2004 à 02:02:55    

ben le jpanel tu lui attribue comme layout manager le verticalLayout...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 29-04-2004 à 12:53:14    

et on le trouve ou le vertical layout ? jlé pas vu dans l'api.
et ca va centrer mon composant qui herite de JPanel ?


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 29-04-2004 à 12:57:19    

et pourquoi pas un gridlayout de 1 colonne et 2 lignes ???


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 29-04-2004 à 13:02:51    

je l'avait fait mais j'arrive pas a centrer le 2e composant.


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 29-04-2004 à 13:05:44    

beh ca se centre tout seul en ajoutant non ?  :heink:


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 29-04-2004 à 13:21:25    

bin non justement il reste aligné a gauche alors ke le JLabel se place bien au centre


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 29-04-2004 à 13:26:18    

tu as essayé de définir les getXxxSize() comme je te l'ai suggéré ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 29-04-2004 à 18:48:16    

oui j'essaye mais ca marche pas


---------------
pourquoi jamais ca ne va ?
Reply

Marsh Posté le 29-04-2004 à 19:07:57    

y'a bien une solution toute sale...
tu crees deux panels l'un en dessous de l'autre, et dans chacun tu fais un flowlayout
puis t'ajoutes tes objets dedans, là ils seront centrés :p


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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