begin process at 2012 02 12 00:29:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Swing

 > EDITEUR DE TEXTE À LA WORDPAD

EDITEUR DE TEXTE À LA WORDPAD


 Information sur la source

Note :
9,25 / 10 - par 4 personnes
9,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Swing Classé sous :editeur, texte, font, underline, strikethrough Niveau :Débutant Date de création :04/10/2006 Date de mise à jour :10/10/2006 15:05:47 Vu / téléchargé :16 784 / 2 045

Auteur : DARKSIDIOUS

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
N'ayant pas trouvé de source similaire, j'ai dû développer ce petit éditeur de texte assez basique, mais qui va me permettre de faire un nouveau CellEditor pour ma future JPropertyTable.

Il s'agit d'un petit éditeur de texte "à la wordpad", c'est-à-dire que vous avez une barre d'outils pour modifier la présentation du texte du JTextPane. Possibilité d'annuler/rétablir les saisie et modifications de la mise en page, et gestion du presse papier.
Gestion de l'enregistrement dans un fichier rtf.

Rien de bien compliqué, mais je pense que ca peux aider certains membres qui voudraient avoir une petite fenêtre d'édition de texte toute simple où l'utilisateur pourrait modifier la mise en forme du texte.
De plus, ca peux montrer comment se servir des fonts.
Enfin, cette source contient un petit menu "exporter" afin de montrer un exemple d'utilisation de mon autre source qui fait un balisage d'un texte.

Note : l'utilisation des styles Underline et Strikethrough, style qui ne sont pas utilisable à ma connaissance à l'aide de l'objet Font !

Source

  • // Voici la fonction la plus intéressante de cette source qui permet de définir le style du texte sélectionné dans le JTextPane passé en paramètre selon les params passés :
  • public static void setJTextPaneFont(JTextPane jtp, boolean bAllText, String sFontName, Boolean bBold, Boolean bItalic, Boolean bUnderline, Boolean bStrikeThrough, Integer iSize, Color oColor) {
  • MutableAttributeSet attrs = jtp.getInputAttributes();
  • // on applique les différents styles
  • if (sFontName != null) {
  • StyleConstants.setFontFamily(attrs, sFontName);
  • }
  • if (bBold != null) {
  • StyleConstants.setBold(attrs, bBold);
  • }
  • if (bItalic != null) {
  • StyleConstants.setItalic(attrs, bItalic);
  • }
  • if (iSize != null) {
  • StyleConstants.setFontSize(attrs, iSize);
  • }
  • if (oColor != null) {
  • StyleConstants.setForeground(attrs, oColor);
  • }
  • if (bUnderline != null) {
  • StyleConstants.setUnderline(attrs, bUnderline);
  • }
  • if (bStrikeThrough != null) {
  • StyleConstants.setStrikeThrough(attrs, bStrikeThrough);
  • }
  • StyledDocument doc = jtp.getStyledDocument();
  • if (!bAllText) {
  • // on modifie uniquement le texte sélectionné
  • int iStart = jtp.getSelectionStart();
  • doc.setCharacterAttributes(iStart, jtp.getSelectionEnd() - iStart, attrs, false);
  • }
  • else {
  • // on modifie le style du jtext lui même
  • jtp.setCharacterAttributes(attrs, false);
  • }
  • }
// Voici la fonction la plus intéressante de cette source qui permet de définir le style du texte sélectionné dans le JTextPane passé en paramètre selon les params passés :

public static void setJTextPaneFont(JTextPane jtp, boolean bAllText, String sFontName, Boolean bBold, Boolean bItalic, Boolean bUnderline, Boolean bStrikeThrough, Integer iSize, Color oColor) {
		
        MutableAttributeSet attrs = jtp.getInputAttributes();

        // on applique les différents styles
        if (sFontName != null) {
        	StyleConstants.setFontFamily(attrs, sFontName);
        }
        if (bBold != null) {
        	StyleConstants.setBold(attrs, bBold);
        }
        if (bItalic != null) {
        	StyleConstants.setItalic(attrs, bItalic);
        }
        if (iSize != null) {
        	StyleConstants.setFontSize(attrs, iSize);
        }
        if (oColor != null) {
        	StyleConstants.setForeground(attrs, oColor);
        }
        if (bUnderline != null) {
        	StyleConstants.setUnderline(attrs, bUnderline);
        }
        if (bStrikeThrough != null) {
        	StyleConstants.setStrikeThrough(attrs, bStrikeThrough);
        }
        
        StyledDocument doc = jtp.getStyledDocument();

        if (!bAllText) {
        	// on modifie uniquement le texte sélectionné
        	int iStart = jtp.getSelectionStart();
        	doc.setCharacterAttributes(iStart, jtp.getSelectionEnd() - iStart, attrs, false);
        }
        else {
        	// on modifie le style du jtext lui même
        	jtp.setCharacterAttributes(attrs, false);
        }
    }


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

04 octobre 2006 20:22:28 :
Modifications apportées après les remarques faites par twinuts.
07 octobre 2006 08:18:24 :
C'est décidément les sources que je ne veux pas mettre à jour qui sont le plus mises à jour ! Eclaircissement du code pour éviter quelques duplication de code évidente utilisation d'un jtoolbar, plus pratique que de simple bouton, ajout de la fonctionnalité d'alignement du texte Correction de quelques bugs dans la mise en forme du texte.
08 octobre 2006 20:13:15 :
Correction de quelques bugs + ajout de la possibilité d'enregistrer/ouvrir dans un fichier rtf.
10 octobre 2006 15:05:48 :
De nouveau une mise à jour qui m'est surtout utile à moi, mais qui peut servir aussi d'autres membres : Il s'agit du menu "exporter" qui est un exemple d'utilisation de mon autre source parlant du balisage d'un texte. Ce menu permet d'exporter le texte entré dans un format directement importable dans la source de tucobouch : le textrenderer. Cependant, en modifiant les balises, il est très simple de faire un balisage HTML ou PHPBB par exemple.

 Sources du même auteur

Source avec Zip Source avec une capture DKSWORDART : UN EDITEUR DE WORDART PERSONNALISÉ EN JAVA
Source avec Zip Source avec une capture DKSWARPEDITOR : TRANSFORMEZ UNE IMAGE TRÈS SIMPLEMENT
Source avec Zip Source avec une capture MARIO BROS : LE JEU DE MARIO
Source avec Zip Source avec une capture DKSTEXTUREEDITOR : CRÉEZ DES TEXTURES COMPLEXES TRÈS SIMPLEM...
Source avec Zip Source avec une capture DKSSHADOWEDITOR : UN ÉDITEUR D'OMBRE SUR DES OBJETS GRAPHIQU...

 Sources de la même categorie

Source avec Zip Source avec une capture MENU CIRCULAIRE EN SWING par Julien39
Source avec Zip Source avec une capture BANNIÈRE EN SWING : TEXTE DÉFILANT SUR UN JLABEL par Julien39
Source avec Zip Source avec une capture INDICATEUR D'ACTIVITÉ ANIMÉ par Julien39
Source avec Zip Source avec une capture JGRAPH : COMPOSANTS SWING CUSTOMISÉS par Julien39
Source avec Zip Source avec une capture JTABLE CUSTOMISÉE par Julien39

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CRYPTEUR-DÉCRYPTEUR AES par dragooon74
Source avec Zip Source avec une capture BANNIÈRE EN SWING : TEXTE DÉFILANT SUR UN JLABEL par Julien39
Source avec Zip Source avec une capture ÉDITEUR DE DESSIN par Julien39
Source avec Zip Source avec une capture CODAGE DES BASES EN BINAIRE par smaili
BLOCNOTE TEXTAREA par jchiaram

Commentaires et avis

Commentaire de Twinuts le 04/10/2006 17:45:21 administrateur CS

Salut,

c'est vrai que tu as fait au plus simple :P
Pour continuer à faire mon chieur tu as oublié :
     le undo et redo qui sont important dans tout éditeurs :P (ref : http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html#undo )
     le copier/couper/coller qui sont aussi important (ref : http://java.developpez.com/faq/java/?page=systeme#SYSTEME_pressePapier )

par contre concernant le principe de gestion des actions c'est assez crade quand meme :P

Commentaire de DARKSIDIOUS le 04/10/2006 18:05:44 administrateur CS

comme je l'ai dit, il s'agit surtout d'une source qui va me permettre de faire un nouveau CellEditor, du coup, les undo/redo et les couper/coller, j'en ai pas besoin, mais en effet, il serait assez simple de les rajouter dedans.

Concernant la gestion des actions, c'est quoi que tu n'aime pas ? Je gère tout mes listeners comme cà moi...

DarK Sidious

Commentaire de sheorogath le 04/10/2006 18:32:16 administrateur CS

moi aussi lol
lui il prefere les addActionListener(this); lol

Commentaire de Twinuts le 04/10/2006 18:45:14 administrateur CS

Salut,

oki :P

Concernant les listeners il y a mieux quand même genre soit de :
       - les regrouper dans une méthode unique gérant tous les listener ce qui simplifie les débugage et la lisibilitée d'un code.
       - Passer par des objets Action ce qui facilite la gestion des actions avec un bouton et le clavier exemple : http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html

bon après ça n'engage que moi :) et n'enleve en rien la simplicitée de ton code

Commentaire de Twinuts le 04/10/2006 18:46:31 administrateur CS

Salut,

nan pas forcement 'this' mais je trouve plus lisible de séparer les action de l'initialisation d'un bout :P

Commentaire de sheorogath le 04/10/2006 19:27:30 administrateur CS

question de gout on va dire ;)

Commentaire de DARKSIDIOUS le 04/10/2006 20:24:05 administrateur CS

Bon j'ai pas mal éclairci le code en passant par un classe interne pour la gestion des events, et en séparant la création des contrôles dans des fonctions.

J'en ai profité pour rajouter le Undo/Redo et la gestion du presse papier, ca peut toujours servir aux autres membres.

DarK Sidious

Commentaire de Twinuts le 04/10/2006 20:31:26 administrateur CS

Salut,

haaaaaaaa on sy retrouve de suite lol :)

Commentaire de DARKSIDIOUS le 04/10/2006 20:59:03 administrateur CS

lol ;)

Bon c'est vrai que c'était crade, d'habitude je sépare la création des contrôles par groupe (dans des fonctions séparées, comme là), mais pour les listeners, c'est vrai que les séparer eux aussi, c'est plus lisible, mais je trouve ca moins pratique quand même.

DarK Sidious

Commentaire de Ombitious_Developper le 05/10/2006 01:35:42

Salut :

Juste une remarque pourquoi ne pas utiliser un menu en plus de la barre d'outils?
Côté esthétique, je pense que l'utilisation des icônes est plus meilleures que l'utilisation des libellées.

Conclusion : source appréciable

Commentaire de kaloway le 06/10/2006 13:09:19

il y a erreur à la ligne if (cmbCombo.getName().compareTo("taille") == 0). ce n'est "taille" mais "Taille" ce qui empeche de modifier la taille du texte.
les mises en forme marchent. par contre pour supprimer les précédentes mises en forme cela est loin d'être évident. à la prochaine mise à jour.

Commentaire de DARKSIDIOUS le 07/10/2006 08:20:47 administrateur CS

Mise à jour de la source afin d'utiliser un jtoolbar, et corriger les quelques petits bugs recensés.
Ajout également de la fonction d'alignement du texte.
Me reste encore un but à corriger : le raffraichissement des boutons d'alignement du texte.

DarK Sidious

Commentaire de Twinuts le 07/10/2006 21:15:53 administrateur CS

Salut,

ça le fait comme ça :P

Commentaire de DARKSIDIOUS le 08/10/2006 20:14:34 administrateur CS

Je viens de mettre à jour la source (je pense pour la dernière fois) afin de rajouter la possibilité d'enregistrer/ouvrir un fichier rtf.

DarK Sidious

Commentaire de romagny13 le 10/10/2006 13:18:44

Bonjour
je hais java
et qd je vois ce quon obtient avec je suis plié de rire mdrr
dsl

Commentaire de Twinuts le 10/10/2006 13:22:56 administrateur CS

Rooooo le trolleur

Commentaire de DARKSIDIOUS le 10/10/2006 13:59:39 administrateur CS

Mouarf romagny, en tant que fan de microsoft, ca se comprends, mais perso, je ne regrête vraiment pas le passage de vb6 à java !!! Pourrais t'on savoir tout de même l'origine de ta haine envers java ? Car ce n'est pas parce que tu aime microsoft que les technologies microsoft sont forcément meilleures...

Commentaire de DARKSIDIOUS le 10/10/2006 15:09:27 administrateur CS

Encore une mise à jour (décidément !), mais cette fois sans grand rapport avec un éditeur de texte : il s'agit du menu exporter qui permet d'exporter le texte tapé dans un format balisé directement importable sur la source de tucobouch (http://www.javafr.com/codes/TEXTRENDERER-CLASSE-POUR-RENDU-TEXTE_39208.aspx)

Cela permet par exemple, en modifiant légèrement les balises que j'ai mises, de faire un balisage HTML ou PHPBB du texte saisie par l'utilisateur, et le stocker dans un base de données par exemple (en tout cas, c'est l'utilisation que je vais en faire ;))

DarK Sidious

Commentaire de sheorogath le 10/10/2006 20:25:51 administrateur CS

mdr fan des techno microsoft quand on vois le .NET on se demande pourquoi c'est carrement instable , les api fourni je n'en parle meme pas : directShow ou WIA meme pas pu piloter une camera correctement ....
sans oublier les incoherence syntaxique ... genre les Thread en C# mais mort de rire ...
puis bon en java tu peut dire : j'ai code ca
en .NET tu dit l'ide et moi avons programmé ca

enfin je m'arrete la je n'aime pas ce genre de message inutile ...
il y a une section debat ...

allez va
+

Commentaire de Twinuts le 10/10/2006 20:58:16 administrateur CS

Salut,

tu as oublié cette poubelle de remote object qu'offre C# (mediocre plagia du remoting en java, à la différence pret c'est qu'en java cela fonctionne).
Heureusement que MS à pensé à la directive unsafe pour que les developpeur puissent enfin s'exprimer. !

Commentaire de lalacharsi le 29/10/2006 10:41:19

Bonjour, je voudrais savoir comment le script fonctionnait ?

je dois l'envoyer sur mon site ?

merci de votre aide svp

Commentaire de DARKSIDIOUS le 29/10/2006 11:09:43 administrateur CS

Il te faut compiler les fichiers java en fichier .class, et faire un jar du projet afin de pouvoir l'exécuter.

Commentaire de noctuna le 22/12/2006 21:57:24

salut, si seulement tu pouvais commenter les codes comme ca des débutants comme moi sauront pourquoi tu as écris telle ou telle procédure..

Commentaire de sheorogath le 12/01/2007 20:19:28 administrateur CS

je viens de tester ton code pour voir l'enregistrement de fichier (je fais un truc un peu similaire)

on ne procede pas du tout de la meme facon pour l'application de style mais ca ce n'est pas important mais je ne sais pas pourquoi dans ton code j'ai l'impression qu'on ne peu pas annuler la selection du gras de l'italic etc ....

je regarderais un peu plus en detail plus tard :p

sinon j'ai un reproche a faire au niveau c'est : une classe par fichier c'est plus agreable ... ton FrmTextEditor.java fait 31ko ...

voila ^^

sinon pour l'enregistrement je regarderais comment tu t'es occupe du rtf

Commentaire de sheorogath le 12/01/2007 20:21:27 administrateur CS

au cas ou ca t'interresserais :

/****************************/
package com.daedric.swing;

import java.awt.Color;

import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;

public class DJTextPane extends javax.swing.JTextPane {
private static final long serialVersionUID = -8905324578389242069L;

public transient Style def = StyleContext.getDefaultStyleContext()
.getStyle(StyleContext.DEFAULT_STYLE);

public transient Style style;

public DJTextPane() {
style = addStyle("default", def);
}

public DJTextPane(StyledDocument doc) {
super(doc);
style = addStyle("default", def);
}

public void append(String mess) {
this.appendMess(mess, Color.black);
}

public void appendMess(String s, Color col) {
try {
StyleConstants.setForeground(style, col);
Document doc = getDocument();
doc.insertString(doc.getLength(), s + "\n", getStyle("default"));
setCaretPosition(getDocument().getLength());
} catch (BadLocationException e) {
e.printStackTrace();
}
}

public void setBold(boolean b) {
StyleConstants.setBold(style, b);
this.setCharacterAttributes(style, true);
}

public void setUnderLine(boolean b) {
StyleConstants.setUnderline(style, b);
this.setCharacterAttributes(style, true);
}

public void setSize(int s) {
StyleConstants.setFontSize(style, s);
this.setCharacterAttributes(style, true);
}

public void setStrike(boolean b) {
StyleConstants.setStrikeThrough(style, b);
this.setCharacterAttributes(style, true);
}

public void setItalic(boolean b) {
StyleConstants.setItalic(style, b);
this.setCharacterAttributes(style, true);

}
public boolean isBold() {
return StyleConstants.isBold(style);
}

public boolean isUnderLined() {
return StyleConstants.isUnderline(style);
}

public boolean isStrike() {
return StyleConstants.isStrikeThrough(style);
}
public boolean isItalic() {
return StyleConstants.isItalic(style);
}
}
/**********************************************/

Commentaire de DARKSIDIOUS le 14/01/2007 09:00:59 administrateur CS

tu as fait ton propre éditeur ?

Car j'ai un bug avec celui-ci pour l'application de style : si l'utilisateur sélectionne le texte de droite à gauche : aucun problème, mais de gauche à droite, là ca marche plus !

La raison ? La position du curseur de sélection : s'il est à gauche du texte sélectionné, alors le caractère après le curseur possède le style de la sélection, par contre, si le curseur est à la fin de la sélection, alors on perd le style courant :(

En ce qui concerne l'enregistrement, il a fallu ruser pour appliquer un style (je ne sais plus lequel, il me semble que c'est la police) : il a fallut que je suive les conseils trouvé sur le forum de sun : il y a un bug dans le sdk de J2SE 5 pour l'enregistrement en RTF. Sinon l'enregistrement se passe bien.

Je serais très intéressé de voir ton code afin de pouvoir comparé les deux méthodes. Il me manque encore pas mal d'expérience en java (comparé à vb) pour faire du code "standard".

DarK Sidious

Commentaire de sheorogath le 14/01/2007 14:42:15 administrateur CS

ok je finis mon prog actuelle et je te montre

pour l'enregistrement de rtf j'ai decouver RTFEditorKit je crois...
elle a l'air de bien marcher enfin bon je verrais ^^

je te tien au courant

Commentaire de Talstus le 03/07/2008 16:45:17 10/10

Ton logiciel fonctionne a merveille, vraiment bravo et merci de le partager comme tu le fait. Ça va beaucoup m'aider.

Commentaire de DARKSIDIOUS le 03/07/2008 19:18:20 administrateur CS

Bah de rien, il est là pour cà, content de voir que cette source est toujours utile :p

Commentaire de aminemmm le 17/09/2009 05:29:47 10/10

Je donne 10/10 pour un éditeur pareil
Merci frero

Commentaire de zoo21 le 01/12/2009 19:25:27

Merci boucoup pour ce code , éditeur impeccable
:)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Textarea et font [ par Volfield ] Salut, je débute en java. Je veux faire une applet qui me permette d'écrire du texte avec la police, le style, la taille et la couleur que je veux (da editeur de texte [ par hatem_benjemaa ] BonjourJe suis entrain d'implémenter un éditeur de texte basique mais qui limite le nombre de caractères tapés à un seuil prédéfini. J'ai utilisé le l supprimer une ligne dans un fichier texte [ par sheeno ] bonjour,je cherche à supprimer une ou plusieurs lignes en plein milieu d'un fichier texte.J'utilise la classe RandomAccessFile pour me positionner à l Editeur de texte HTML de Nicolaserny du 15/04/2002 [ par tonyimbault ] Bonjour,j'ai utilisé le code de l'editeur de texte déposé par Nicolaserny (le 15 04 2002) pour mettre en place l'impression d'une zone de texte en HTM editeur de texte [ par cheddli ] une interface du premier onglet qui contien une zone texteet le deusième  contient des statistique sur le texte saisie(nb de mot,nb dec editeur de texte de type word [ par obigero ] bonjour je dois faire un editeur de texte en java (ds un JTextPane)  qui replique word (enfin seulement qq fonctionnalités) et je voudrais q Editeur de texte [ par Mselle ] Bonjour, J'ai un petit problème. Je dois réaliser une application en Java et une partie du travail consiste en la possibilité d'écrire du texte format Editeur de texte [ par nadersghir ] salut tt le mondeje suis un étudiant ingénieur informatique, je suis un peu débutant en JAVAEn fait, j'un un projet à réaliser en java, durant cette a preciser le font d un texte en java [ par jafrabousselmi ] Bonsoir Je veux copier le contenue d un formulaire en java dans un fichier rtf et je veux preciser le font d ecriture et l emplacement qui doit s affi urgent (editeur de texte) [ par aaaaa111 ] salut tout le mondelors de la construction de mon petit site je voulais appeler un editeur de texte comme ceuil que je suis entrain d'ecrire avec , je


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales