2010-08-31 6 views
0

J'utilise un JTextPane pour éditer des fichiers XML. Un fichier analyseur jflex split xml en jetons et en utilisant un document personnalisé (étend DefaultStyledDocument) i syntaxe de couleur:Éditeur JTextPane grand fichier et performance

doc.setCharacterAttributes (token.getCharBegin() + changement, token.getCharEnd() - token.getCharBegin() , Token_Styles_Define.getStyle (token.getDescription()), true);

Mon problème est de charger et d'éditer un grand fichier xml, par exemple un fichier xml de 400kb prend 30 secondes et pour 700kb 1Mb j'obtiens un espace de tas java. je google et je l'ai trouvé:

"Définir une limite JTextPane/JEditorPane peut bien gérer (comme 500Ko ou 1Mo) Vous aurez seulement besoin de charger un morceau du fichier dans le contrôle avec cette taille .. Commencez par charger la 1ère partition du fichier Ensuite, vous devez interagir avec le conteneur de défilement et voir s'il a atteint la fin/le début du morceau en cours du fichier.Si oui, affichez un joli curseur d'attente et chargez le précédent/le bloc suivant en mémoire et dans le contrôle de texte Le bloc de chargement est calculé à partir de la position actuelle du curseur dans le fichier (offset) chargement du bloc = offset - limite/2 à offset + limite/2 Le texte sur le JTextPane/JEditorPane ne doit pas changer lors du chargement de morceaux ou d'e Si l'utilisateur se sent comme dans une autre position du fichier. Ce n'est pas une solution triviale, mais si vous ne trouvez pas d'autre contrôle de tiers pour ce faire, je voudrais aller de cette façon. "(Bruno conde)

Est-ce une bonne solution et quelqu'un peut-il me donner un exemple (lien projet tutoriel) ou sont-toute autre solution? Comment pouvons-nous améliorer les performances JTextPane? Thx

+0

http://java-sl.com/JEditorPanePerformance.ht ml Cela peut vous aider Cordialement, Stas – StanislavL

Répondre

0

Un méga-octet de Dans mon bureau, l'ajout d'une chaîne de 1 Mo avec setText() prend environ 1,6 seconde, mais une fois chargé, il n'y a pas de décalage notable. source la plus probable du retard