Ajouter des Canvas ds JScrollPane

Ajouter des Canvas ds JScrollPane - Java - Programmation

Marsh Posté le 10-12-2003 à 23:05:32    

bon alors voilà  g fait un tit prog a la con pour tester un truc...
betement pour ajouter des label progressivement ds un JScrollPane
tout tourne nikel avec le code suivant  
 
 
void jButton1_mouseClicked(MouseEvent e) {
Canvas huhu = new couleur();
JLabel jLabel2 = new JLabel();
i=i+jLabel2.HEIGHT+13;
 
jLabel2.setHorizontalAlignment(SwingConstants.LEADING);
jLabel2.setHorizontalTextPosition(SwingConstants.LEADING);
jLabel2.setText(" "+i+" " );
jLabel2.setVerticalAlignment(SwingConstants.BOTTOM);
jLabel2.setVerticalTextPosition(SwingConstants.BOTTOM);
jPanel1.setPreferredSize(new Dimension(0,i));
 
jPanel1.add(jLabel2);
jScrollPane1.validate();
JScrollBar sbv = jScrollPane1.getVerticalScrollBar();
sbv.setValueIsAdjusting( true );
sbv.setValue( sbv.getMaximum() );
}
}
 
mais now j'aimerais a la place d'ajouter des labels, rajouter des canvas ki serait de ce type
 
public class couleur extends Canvas {
 
  public void paint (Graphics g){
 
      String pseudo = " "+Cadre1.i+" ";
 
      g.drawRect(0, 0, 160, 15);
      g.setColor(new Color(238, 241, 179));
      g.fillRect(1, 1, 159, 14);
      g.setColor(Color.black);
      g.setFont(new java.awt.Font("Verdana", 1, 10));
      g.drawString(pseudo + " :: age :: ville", 4, 12);
    }
 
  }
le seul prob c ke kan je fait jPanel1.add(new couleur()); bah il le dessine une fois ... mais les ajoutes pas au fur et a mesure l'un en dessous de l'autre et les superposes meme pas sur le premier dessiner :(
 
si klk un pouvais m'expliker la subtiliter a faire pour réussir l'enroule ...
 
dsl si ca parait logik pr certain :s
 
merci d'avance  :bounce:


Message édité par _Dim_ le 11-12-2003 à 17:02:06
Reply

Marsh Posté le 10-12-2003 à 23:05:32   

Reply

Marsh Posté le 11-12-2003 à 14:24:38    

personne c m'aider? :(
 
AIDER MOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII  :cry:  :(  :cry:


Message édité par _Dim_ le 11-12-2003 à 16:46:43
Reply

Marsh Posté le 11-12-2003 à 19:37:08    

c ma question ki est pas clair ou vous boycoter mon topic? :p

Reply

Marsh Posté le 11-12-2003 à 22:37:08    

J'ai pas compris.
 
Je soupçonne que tu as besoin de la méthode repaint(), mais comme je ne saisis pas ta formulation, tu me pardonneras cette réponse.


---------------
Le site de ma maman
Reply

Marsh Posté le 12-12-2003 à 00:11:13    

g réussi a résoudre le problem :) mais now ... g un prob
quand j'ajoute au fur et a mesure les canvas... bah... v mettre une img ca ira plus vite :)
http://dim.kiti.be/huhu.jpg
 
donc wala si klk un c me dire cmt ne pas modifier le contenu de tout a la fois mais just du dernier ke je viens d'ajouter ... pcq je comprend pas :'(


Message édité par _Dim_ le 12-12-2003 à 00:11:28
Reply

Marsh Posté le 12-12-2003 à 06:54:28    

Modifier le contenu ? C'est quoi le contenu ? C'est "380 :: age :: ville" ? Putain parle clairement, on comprends rien à ton problème.


---------------
Le site de ma maman
Reply

Marsh Posté le 12-12-2003 à 12:49:18    

ben en fait les bloc bleu avec ecrit 380 :: age :: ville je les ajoute progressivement en clikant sur le bouton et le 380 c un int et ilc ommence a 20 ... et normalement il devrait ecrire 20 pi 40 pi 60 l'un en dessous de l'autre ... mais là il ecrit 20 puis 40 mais le 20 et réécrit en 40 ... donc sur l'image ya des 380 partout :s et je comprend pas comment lui dire de pas modifier tout ceux qu'il a ajouter ...

Reply

Marsh Posté le 12-12-2003 à 14:01:18    

Tu utilises i, qui est un entier public. comment évolues i ?
 
Clairement, si tu fais i += 20; le résultat est normal, puisque ce que tu fais, c'est dire comment l'élément doit être dessiné. A l'instant t, si i vaut 380, tous tes éléments écrivent 380.


---------------
Le site de ma maman
Reply

Marsh Posté le 12-12-2003 à 14:19:35    

ah ok ... ben i est de type static car il est appeler dans couleur() depuis la frame principale...
moi j'aimerais qu'il bouge pas mais vu que mon but c de lui passer une string qu'il l'écrit et qu'elle bouge plus ... c pas trop ca lol
 
ya moyen de dire de pas tout redessiner mais seulement dessiner le dernier ajouter?

Reply

Marsh Posté le 13-12-2003 à 03:20:28    

no idea?

Reply

Marsh Posté le 13-12-2003 à 03:20:28   

Reply

Marsh Posté le 13-12-2003 à 10:17:02    

canvas ca reste un peu flou pour moi...


Message édité par meumeul le 13-12-2003 à 10:20:06
Reply

Marsh Posté le 13-12-2003 à 17:41:49    

pour moi ossi ma fois :D mais jaimerais comprendre :p

Reply

Marsh Posté le 14-12-2003 à 08:25:24    

_Dim_ a écrit :

ah ok ... ben i est de type static car il est appeler dans couleur() depuis la frame principale...
moi j'aimerais qu'il bouge pas mais vu que mon but c de lui passer une string qu'il l'écrit et qu'elle bouge plus ... c pas trop ca lol
 
ya moyen de dire de pas tout redessiner mais seulement dessiner le dernier ajouter?


Aïe !
 
Bon, alors primo : tu ne peux pas demander à une partie de ton interface ne pas se redessiner, la méthode paint() est par construction appelée par exemple lorsque une fenêtre masque ton programme.
 
Deuxio, i ne peut pas être static. C'est une caractéristique de ton canvas, ça n'a aucun sens d'en faire une variable static.
 
Tertion, je ne sais pas ce que tu comptes faire de ton Canvas, mais parti comme c'est parti, j'affirme assez volontiers que ce n'est pas la classe qu'il te faut. Jète un coup d'oeil sur JList.


---------------
Le site de ma maman
Reply

Marsh Posté le 14-12-2003 à 12:10:01    

ben les jList c bien joli mais c bien moche ossi lol ... ce ki est pratique avec paint c que tu peux dessiner de la couleur que tu veux ect et que avec le JList c'est une autre paire de manche... fin... tant pis alors
mais chuis sur que ya moyen :)

Reply

Marsh Posté le 14-12-2003 à 12:16:23    

Bien sûr qu'il y a moyen, avec Canvas pourquoi pas.
 
Seulement, ton code est manifestement mauvais. i ne doit pas être static, c'est incompatible avec ton problème. En revanche, si tu tiens à garder i tel qu'il est, chaque Canvas doit disposer d'une copie de i, ayant la valeur que i avait lors de l'instantiation du Canvas.


---------------
Le site de ma maman
Reply

Marsh Posté le 14-12-2003 à 13:12:16    

en fait g capté... je déclarais la string ki allait contenir le i dans la methode paint() et now je l'ai déclaré avant et il garde l'ancienne valeur ds les anciens :D
 
merci pour tout :)


Message édité par _Dim_ le 14-12-2003 à 13:12:27
Reply

Marsh Posté le 14-12-2003 à 14:59:12    

Voilà, c'est une manière de faire. En somme la copie de i dont je te parlais figure dans l'objet String. C'était une possibilité.


---------------
Le site de ma maman
Reply

Marsh Posté le 14-12-2003 à 18:16:03    

merci bien en tout cas :)
now v essayer d'ajouter des listeners dessus ... mais c pas gagner :)

Reply

Sujets relatifs:

Leave a Replay

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