L'éditeur JavaScript
Visiteur non-identifié | Identifiez-vous | Devenir membre
Code perdu ? | Combien de visiteurs sur votre site ?
Rechercher :
Page d'accueil
     Home Page

JavaScript
     Tous les scripts
     Proposer un script
     Recherche de script
     AJAX new!
     Cours de JavaScript
     Liste de discussion
     Forums

Services :
     CountUs
     myCircle

     Referencement
     Créat. de bannière

Trucs et astuces :
     HTML / CSS
     PHP / MySQL
     Réferencement
     Graph / Présentation
     Toutes les astuces
     Ajouter un article

MailingList :
104509 abonnés

Annuaire webmaster :      Hebergement web
     Referencement
     Sites webmasters
     XHTML - CSS2
     PHP
     Affiliation - Pub
     FAI

     Annuaire webmaster

Ressources pour webmasters :
     Kits graphiques
     Création logo

Plus :
     Comparateur de prix
     Foire aux questions
     Les membres
     Devenir annonceur
     Faire un lien
     Contact

Partenaire :
     Hebergement gratuit
     Le PHP facile
     Horoscope
     Comscripts
     WebmasterClub
     Activeartanima...
     Le village de ...
     L'écriteau
     Faro-dessing
     Gifs animés, f...
     Netsources
     Easy-script.com
     Trucs et astuc...
     Je javascript
     Créer son site...
     Les autres
     Votre site ici ?


Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]


[ 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.
Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]






29 visiteurs
actuellement en ligne

    PUBLICITE

Wilogo.com - Création Logo Entreprise

     ANNUAIRE WEBMAST.
Hewlett Packard
Espace HP pour les particuliers et petites entreprises.
http://h41257.www4.hp.com...
Cat : Hardware
Voir l'annuaire webmaster


     LES SCRIPTS :
78 à éditer
68 à copier/coller
247 des membres
2580 sur le web
>> Tous les scripts

     LES MEMBRES :
55678 membres
8491 comptes CountUs
1506 comptes myCircle

     LES FORUMS :
14 forums
39327 topics
189131 messages
>> Les forums

    SONDAGE

Vous avez un blog ou site classique ?
Un blog
Un site classique
Les deux !
La mini-astuce "Navigateur" du jour par astuces-win
Dans Mozilla Firefox, utilisez Ctrl + T pour ouvrir un nouvel onglet. La navigation par onglets est beaucoup plus facile et permet de regrouper plusieurs sites en une seule fenêtre. Ctrl + W permettra de fermer l'onglet ouvert.
Proposer votre mini-astuce | Archives des mini-astuces
© 1999-2008 K-NETWORK - Tous droits réservés | CNIL N° 844440 | 18/11/2008 23:52:05 | Design by Studcrea | Gen. en 0.728 sec.