Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2667 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [swing] pb rafraichissement scrollpane

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[swing] pb rafraichissement scrollpane

n°496392
zavatha
Posté le 25-08-2003 à 10:02:35  profilanswer
 

salut,
 
j'ai place ds un JScrollpane, un objet d'une classe parso ki derive de JPanel ds laquelle g redéfinit paint()
 
quand je fait défiler mo objet MyPanel, il n'est rafraichit que lorsque je déplace ma fenetre partiellement en dehors de l'écran :(
 
g redéfinit repaint() qui fait appel à paint()
 
comment forcer l'appel à repaint ?
puis je ajouter un mouselistener à mon scrollbar pour appeler repaint lors du mouser over ? et comment ?
 
merci :)

mood
Publicité
Posté le 25-08-2003 à 10:02:35  profilanswer
 

n°496734
ozark74
Posté le 25-08-2003 à 13:32:02  profilanswer
 

ca fait un certain temps que j'ai plus fait de Swing (donc je risque de dire des conneries)
 
si mes souvenirs sont bons pour faire fonctionner un JScrollPane il suffit de lui ajouter un component de la manière suivante :
 

Code :
  1. scrollPane.getViewPort().add(component);

n°496964
Krueger
tout salaire demande dutravail
Posté le 25-08-2003 à 15:36:18  profilanswer
 

Hum... Est-ce vraiment une bonne idée de redéfininr repaint() à la place de paint() ?


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°496973
zavatha
Posté le 25-08-2003 à 15:44:45  profilanswer
 

ben g redefinit paint() et repaint :
 
public void repaint(Graphics g){
paint(g);
}
 
c tout... m bon j'enleve  :D  
 
sinon l'astuce d'avant marche pô et le coup du listener sur le scrollBar non plus...
 
d'autres idées ?

n°496981
Krueger
tout salaire demande dutravail
Posté le 25-08-2003 à 15:51:17  profilanswer
 

Ah oui, quel c**, j'avais oublié la première phrase. :sarcastic:
 
Sinon, peut-être qu'un aperçu de ton code pourrait nous permettre de mieux t'aider ?


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°496986
ozark74
Posté le 25-08-2003 à 15:58:37  profilanswer
 

Krueger a écrit :


Sinon, peut-être qu'un aperçu de ton code pourrait nous permettre de mieux t'aider ?


 
+1
 
 
sinon si tu mets une 'bête' Jlist dans ton scrollpane, ca fonctionne ?

n°497309
yo c spi
Yo !
Posté le 25-08-2003 à 18:10:13  profilanswer
 

Si tu veux par exple mettre une JList avec un ScrollPane et l'ajouter a ta fenetre, il afut ajouter le ScrollPane et pas la JList.

Code :
  1. // list : une JList crée a partir d'un modele (ca tu t'en fout)
  2. list = new JList(model);
  3. // Création du ScrollPane sur la liste
  4. listScroll = new JScrollPane(this.list);
  5. // Ajout du ScrollPane au Panel (ou a quoi que ce soit d'autre)
  6. pane.add(listScroll);


 
Normalement lors d'ajout le rafraichissement est automatique

n°498908
zavatha
Posté le 26-08-2003 à 20:11:59  profilanswer
 

voici la facon dont je crée ma fenetre :  
 
MyPanel panel = new MyPanel(liste);
jsp = new JScrollPane();
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jsp.getViewport().add(panel);
getContentPane().add( BorderLayout.CENTER, jsp);
panel.setVisible(true);

 
et voici ma methode paint (définie dans MyPanel, qui etend JPanel) :
 
public void paint(Graphics g){
 int largeureCumulee = space;
 int hauteurCumulee = space;
 int y = 0;
      //dessin des codes sur le panel
  g.setColor(new Color(0,0,0));
  Barcode code;
  setSize(WIDTH, HEIGHT);
 for(int i = 0 ; i < liste.getItemCount() ; i++){
  code = new Barcode(liste.getItem(i));  
  if(largeureCumulee + code.getStringCode().length() >= WIDTH){
  hauteurCumulee += (code.getHauteur() + 2* space);
  largeureCumulee = space;
 }
 for(int j = 0; j < code.getStringCode().length(); j++){
     if((code.getStringCode().charAt(j)) == 'b'){
  g.drawLine(j + largeureCumulee, hauteurCumulee,j + largeureCumulee, code.getHauteur() + hauteurCumulee);
     }
 }
 g.drawString(code.toString(), (int)((code.getStringCode().length() - (code.toString().length()))/2) + largeureCumulee, code.getHauteur() + 12 + hauteurCumulee);
 largeureCumulee += (code.getStringCode().length() + space);
 }
 //fin du dessin des codes
}
}

dsl d'être si long, m c pour placer le contexte  :ange:  

n°498967
Krueger
tout salaire demande dutravail
Posté le 26-08-2003 à 21:36:46  profilanswer
 

As-tu toujours le problème si tu ajoutes super.paint(g) à la fin de ta méthode paint() ?
 
Et puis pour rendre ton code plus lisible tu peux le mettre entre balises [ cpp] et [ /cpp].


Message édité par Krueger le 26-08-2003 à 21:39:30

---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°499121
zavatha
Posté le 26-08-2003 à 23:33:29  profilanswer
 

oui ca marche si je le met au DEBUT de la methode :)
 
merci  :bounce:  
 
c bizard ca, l'appel à super est pas implicite dans ce cas comme dans le constructeur ?
 
c une redéfinition ?
 

mood
Publicité
Posté le 26-08-2003 à 23:33:29  profilanswer
 

n°499271
Krueger
tout salaire demande dutravail
Posté le 27-08-2003 à 09:20:19  profilanswer
 

Hééé non. ;) Uniquement dans un constructeur, qu'il y ait redéfinition ou pas.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [swing] pb rafraichissement scrollpane

 

Sujets relatifs
[Java] Class swing - Coordonnées d'un JButtonSwing: une chtite question sur le redimentionnement
[Swing / JTextArea] Aligner une scrollbar sur le bas d'un JTextArea[JAVA ] ScrollPane : doLayout déconne sous Linux JRE 1.4.1
GUI Swing[java] rafraichissement jframe + info optimisation [OK]
Swt et Swingjava + swing + graph2D
swing & awtProbleme avec Swing...
Plus de sujets relatifs à : [swing] pb rafraichissement scrollpane


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)