

new!








|
[ Forums >> Webmasters >> Les autres langages >> [applet java] méthode paint() ]
| > [applet java] méthode paint() |
[ Posté par jparia ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 24-07-2008 à 14:38 | 564 messages ]
  |
 Bonjour à tous,
Je me lance dans la création d’applet java et j’ai un problème avec la méthode « paint() ».
J’arrive à dessiner un texte mais lorsque je désire en dessiner plusieurs, je n’y arrive pas…
Dans mon code ci-dessous, les textes sont issus d’un recordset provenant d’une base SQL Server et stockés dans la variable « labelString ».
Le résultat affiché par la méthode « System.out.println(String) » dans la console de l’éditeur Eclipse est correcte.
Mais lorsque j’utilise la méthode « repaint() » en changeant la position verticale du texte par la variable « posY », rien ne se dessine.
Si je ne modifie pas « posY », seul le dernier enregistrement du recordset se dessine en position 25.
import java.sql.*;
import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestSql extends Applet {
static final long serialVersionUID = 1L;
static Connection maConnection;
static String labelString = "";
int posY = 1;
public void init() {
initConnection();
Statement monStmt = null;
ResultSet monRs = null;
String NomPrenom = "";
try{
monStmt = maConnection.createStatement();
monRs = monStmt.executeQuery("SELECT UTIL_NOM, UTIL_PRENOM FROM UTILISATEURS ORDER BY UTIL_NOM, UTIL_PRENOM");
while (monRs.next()) {
NomPrenom = monRs.getString("UTIL_NOM");
NomPrenom += " ";
NomPrenom += monRs.getString("UTIL_PRENOM");
labelString = NomPrenom;
//System.out.println(NomPrenom);
repaint();
posY++;
}
}
catch(SQLException eSQL){
labelString = "Erreur: " + eSQL;
}
finally {
try { monRs.close(); } catch (Exception e) { }
try { monStmt.close(); } catch (Exception e) { }
}
closeConnection();
}
public void run() { }
public void paint(Graphics g) {
if(labelString != ""){
if(labelString.substring(0, 7).equals("Erreur:")){g.setColor(Color.red);}
else{g.setColor(Color.blue);}
g.setFont(new Font("Verdana", Font.BOLD, 12));
g.drawString(labelString, 25, 25 * posY);
}
}
...
|
|
J’ai pas tout compris (lapin compris)
[Message édité par jparia le 24-07-2008 à 15:04]
________________ bibliothèque javascript jaria: http://jaria.free.fr
 
|
|
|
[ Posté par v1nce ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 24-07-2008 à 18:46 | 3861 messages ]
  Après lecture en diagonale.
Je dirai que la méthode paint est appelée à intervalle régulier (ou lors d'un événement)
Dans ton init tu fais n appels à repaint. Je pense qu'il doit juste stocker l'info qu'il faudra redessiner l'écran quand l'occasion se présentera. Quand il a fini son init il regarde s'il a des events "paint" en attente. Il en trouve 150. Pas la peine de faire 150 appels à Paint,1 seul suffira. Sauf que ton posy se trouve maintenant en dehors du canvas donc tu ne vois rien. Si tu n'incrémentes pas y tu vois la dernière ligne parce que la méthode paint a été appelée 1 fois et ne dessine qu'une seule ligne.
Récupère ton ensemble de lignes dans un tableau et dessine toutes les lignes du tableau lors du paint et ça ira mieux, je pense
________________ V1nce
Si je les ai oubliés les bonjour, merci et au revoir sont implicites
Brevets logiciels : dites NON !
http://petition.eurolinux.org/index.html
http://swpat.ffii.org/index.fr.html
| [ Posté par jparia ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 24-07-2008 à 20:33 | 564 messages ]
  Merci pour ta réponse v1nce et c'est ce que j'ai découvert cette aprem.
La méthode paint dessine l'ensemble d'un seul .
J'ai donc créé un tableau et je le parcours dans la méthode paint.
Pas terrible comme interface, je préfère de loin flash beaucoup plus dynamique.
Côté accès aux données, c'est pas terrible non plus car avec la version des drivers SQL Server 2000 Driver for JDBC Service Pack 2, impossible de parcourir le Recordset dans les deux sens et impossible de récupérer le nombre de ligne sans passer le count dans la requête elle même.
Archaïque tout de même tout ça
________________ bibliothèque javascript jaria: http://jaria.free.fr
| [ Posté par v1nce ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 25-07-2008 à 12:11 | 3861 messages ]
 
jparia a dit
Merci pour ta réponse v1nce et c'est ce que j'ai découvert cette aprem.
La méthode paint dessine l'ensemble d'un seul .
J'ai donc créé un tableau et je le parcours dans la méthode paint.
Pas terrible comme interface, je préfère de loin flash beaucoup plus dynamique.
|
|
Je dirai plutôt que tu l'utilises mal
Utilise des widgets (TextField...) au lieu d'écrire les lignes toi-même.
Positionner et dessiner les éléments soi-même c'est bon lorsqu'on veut faire du spécifique.
Et à ce moment là on utilise généralement le double buffering.
________________ V1nce
Si je les ai oubliés les bonjour, merci et au revoir sont implicites
Brevets logiciels : dites NON !
http://petition.eurolinux.org/index.html
http://swpat.ffii.org/index.fr.html
|
|
Services email :
  Vous devez vous identifier pour profiter des services par email du forum.
|

|