IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

JTextPane et temps de traitements


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 108
    Par défaut JTextPane et temps de traitements
    Bonjour,

    Je trouve que l'exécution est longue pour afficher un fichier dans un JTextPane (pour un fichier de 3Mo, il faut bien compter 5 secondes).
    Alors que le même fichier pour un JTextArea est quasiment instantané...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    public void lectureFichierTextPane(JTextPane visualisationTextPane) throws IOException, BadLocationException{
    		File fichier = new File(filePath);
     
    		if(fichier.exists()){
    			//visualisationTextPane.setEditable(false);
    			//visualisationTextPane.setEnabled(false);
     
    			int taille = (int)fichier.length();
    			if(taille < Integer.MAX_VALUE){
    				BufferedReader buffALire = new BufferedReader(new FileReader(fichier));
     
    				char[] buffLu = new char[taille];
     
    				buffALire.read(buffLu,0,taille);
    				//System.out.println(buffLu);
    				visualisationTextPane.getDocument().insertString(0, new String(buffLu), visualisationTextPane.getStyle("default"));
     
    				//visualisationTextPane.setEditable(true);
    				//visualisationTextPane.setEnabled(true);
    			}else
    				System.out.println("Taille d'int depasse ");
    		}
    	}


    Avez-vous une solution pour optimiser mon code ?

    Merci d'avance,
    Noctis

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Et en utilisant la méthode read :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void read(Reader in, Object desc) throws IOException

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 108
    Par défaut
    merci mais le temps reste sensiblement le meme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    File fichier = new File(filePath);
     
    		if(fichier.exists())
    			visualisationTextPane.read(new FileReader(fichier), filePath);

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Ou alors effectuer ton chargement dans un autre thread et utiliser la méthode append qui est thread safe.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 108
    Par défaut
    Le temps ne varie pas.. J'ai défini une classe thread comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    private class MonThread extends Thread {
     
    		JTextPane visualisationTextPane;
    		File fichier;
     
    		public MonThread(JTextPane visualisationTextPane, File fichier){
    			this.visualisationTextPane = visualisationTextPane;
    			this.fichier = fichier;
    		}
     
    		public void run() {
    			try {
    				visualisationTextPane.read(new BufferedReader(new FileReader(fichier)), filePath);
    			} catch (FileNotFoundException e) {
    				e.printStackTrace();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    	  	}
    	}
    (Je n'ai pas de fonction append pour un JTextPane :s)

Discussions similaires

  1. Utilisation JProgressBar & temps de traitement incconu
    Par greg1602 dans le forum Composants
    Réponses: 22
    Dernier message: 30/11/2005, 20h52
  2. [Tableaux] Temps de traitement ... affichage de page
    Par mathieu77186 dans le forum Langage
    Réponses: 37
    Dernier message: 25/10/2005, 17h45
  3. [MySql] temps de traitement interminable
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/07/2005, 15h14
  4. [Perf]Utilisation des Logger et temps de traitement ?
    Par elitost dans le forum Logging
    Réponses: 6
    Dernier message: 12/04/2005, 23h13
  5. optimisation de temps de traitement xml/xslt
    Par Erwy dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/05/2004, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo