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

AWT/Swing Java Discussion :

[Swing][Chat]JTextPane ou JEditorPane ?


Sujet :

AWT/Swing Java

  1. #1
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut [Swing][Chat]JTextPane ou JEditorPane ?
    Bonsoir

    je suis en train de developper un petit chat en java et pour le moment j'utilisais un JTextArea, mais je veut ajouter de nouvelles fonctionnalités à mon chat.

    Et je ne sais pas quoi choisir entre le JTextPane et le JEditorPane (d'ailleurs je ne comprends pas vraiment la différence ), sachant que je devrai pouvoir y afficher :
    • Du texte de plusieurs couleurs (je pensais faire avec du html, c'est une bonne idée ?)
    • Des smileys
    • Des liens


    merci d'avance J'avoue que je suis un peu perdu... bien que je penche plutot pour un JEditorPane

  2. #2
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    JTextPane extend JEditorPane.
    moi j'utilise JTextPane pour mon chat.

    lequel choisir regarde la
    http://java.sun.com/docs/books/tutor...ditorpane.html

  3. #3
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Merci de ta réponse

    Donc, si j'ai bien compris, avec un JTextPane, je vais tout écrire dans le styledDocument, c'est ca ?

    Pour la couleur d'un texte, je devrai aussi tout dire lors de l'insertion c'est juste ?

    Encore, une chose, pour inclure une image, un smiley par exemple, il me suffira d'employer insertIcon ?

    Encore merci

  4. #4
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    Hello...

    Si tu veux, ce soir je t'envoi une class qui hérite de JTextPane que j'avais fait pour un chat...



    Juste une p’tite question: ton chat c'est un projet personnel ? Tu comptes le mettre en ligne plus tard ou c'est seulement pour t'exercer ?

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je veut bien regarder ta classe

    C'est un projet personnel que je fais pour employer en classe et pour le plaisir, mais j'ai pas réfléchi si je veut le mettre à dispo ou pas, je verrai

    De plus, il faut encore que je finisse mon logiciel actuel (gestion de films) avant de faire le chat

  6. #6
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    moi j'utilise une classe a moi qui extend DefaultStyledDocument pour afficher les icones

    tout ce que j'ai fais c'est un peu lon a tout expliquer parce que c'est tout une architecture autour avec des classe qui extend DefaultEditorKit DefaultStyledDocument StyleContext StyleConstants etc

    pour faire court
    tu peux commencer par regarder les StyledDocument et tout ce qui tourne autour.

    voila une idee de depart.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    class MyOwnStyledDocument extends DefaultStyledDocument { 
     
        MutableAttributeSet coloredText;
     
        private DefaultStyledDocument doc;
        private Element rootElement;
     
        private Style anIconStyle = null;
        private Style aComponent = null;
     
        public SyntaxDocument() {
            doc = this;
            rootElement = doc.getDefaultRootElement();
     
     
            coloredText = new SimpleAttributeSet();
            StyleConstants.setForeground(coloredText, Color.red);
     
            doc.addStyle("anIconStyle", null);
            StyleConstants.setIcon(aIconStyle, new ImageIcon("path to your smiley.png")); 
     
     
            aComponent = doc.addStyle("aComponent", null);
            JLabel aLink = new JLabel();  // JButton,
            aLink.bindToWhatEverAction(); // this is up to you.
            StyleConstants.setComponent(aComponent, aLink);
        }
     
    	  /* overrided  method */
        public void insertString(int offset, String s ..) throws BadLocationException {
            super.insertString(offset, s, ...);
            // now apply you own styles
            applyStyles(offset, s);
        }
     
        /* overrided  method */
        public void remove(...) throws BadLocationException {
            super.remove(.....);
            ...
        }
     
        private void applySttles() {
             ... test which style match to you changes.
             // here a colored text in red
             doc.setCharacterAttributes(fromOffset, ToOffset, coloredText, false);
     
             // here a smiley
             doc.insertString(offset, "what ever (it will be ignored)", anIconStyle);
     
             // here a link.
             doc.insertString(offset, "what ever (it will be ignored)", aComponent);
        }
     
    }
    j'ai pas tester mais l'idee est la.
    dans mon chat que je fais, c'est ca mais tout est dynamique meme les styles.


    aussi tout ce que tu peut faire avec un JEditorPane tu peux le faire avec un JTextPane le contraire c'est pas vrai.

    essaye, teste ce qui correspond le plus a ce que tu veux.

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je vais voir tout ca, mais peut etre que pour me familiariser avec JTextPane et autre, je vais pas prendre de classes toute faite, comme ca, je vais mieux m'entrainer, mais merci beaucoup quand meme

  8. #8
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    voila la class qui hérite de JtextPane:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    package swingo;
    import java.awt.Color;
    import javax.swing.Icon;
    import javax.swing.JComponent;
    import javax.swing.JTextPane;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.Style;
    import javax.swing.text.StyleConstants;
    import javax.swing.text.StyleContext;
    import javax.swing.text.StyledDocument;
     
     
     
    public class JOTextPane extends JTextPane {
     
    	private StyledDocument styledDocument = getStyledDocument();
    	protected float COMPONENT_ALIGNEMENT = 0.82f;
     
     
     
    	// Constructeur
    	public JOTextPane() {
    		super();
    	}
     
     
    	// Méthode pour générer le nom du style passé en paramètre
    	private static String getNameStyle(boolean bold, boolean italic, boolean underline, int size, Color color) {
     
    		StringBuffer sb = new StringBuffer();
     
    		if(bold) 		sb.append("1");
    		else 			sb.append("0");
    		if(italic) 		sb.append("1");
    		else 			sb.append("0");
    		if(underline) 	sb.append("1");
    		else 			sb.append("0");
    						sb.append(size);
    						sb.append(color.getRGB());
     
    		return sb.toString();
    	}
     
     
    	// Méthode pour créer et récupérer le style passé en paramètre
    	private Style getStyle(boolean bold, boolean italic, boolean underline, int size, Color color) {
     
    		// Récupère le nom du style
    		String styleName = getNameStyle(bold, italic, underline, size, color);
     
    		// On récupère le style (Si il n'existe pas on récupère null)
    		Style style = styledDocument.getStyle(styleName);
     
    		// Si le style existe on le retourne
    		if(style != null) return style;
     
    		// Si le style n'existe pas on le créer
    		else {
     
    			// Création du nouveau style
    			Style styleDefaut 	= styledDocument.getStyle(StyleContext.DEFAULT_STYLE);
    			style 				= styledDocument.addStyle(styleName, styleDefaut);
     
    			StyleConstants.setBold(style, bold);
    			StyleConstants.setItalic(style, italic);
    			StyleConstants.setUnderline(style, underline);
    			StyleConstants.setFontSize(style, size);
    			StyleConstants.setForeground(style, color);
     
     
    			return style;
    		}
    	}
     
     
    	// Ajout un texte à la fin
    	public synchronized void insertTextEnd(String texte, boolean bold, boolean italic, boolean underline, int size, Color color) {
    		try { styledDocument.insertString(styledDocument.getLength(), texte, getStyle(bold, italic, underline, size, color)); } catch(BadLocationException e) {}
    	}
     
     
    	// Ajoute une icone à la place de la sélection
    	public synchronized void insertIconSelect(Icon icon) {
    		insertIcon(icon);
    	}
     
     
    	// Ajoute d'une icone à la fin
    	public synchronized void insertIconEnd(Icon icon) {
    		select(styledDocument.getLength(), styledDocument.getLength());
    		insertIconSelect(icon);
    	}
     
     
    	// Ajoute d'un composant à la place de la sélection
    	public synchronized void insertComponentSelect(JComponent c) {
    		c.setAlignmentY(COMPONENT_ALIGNEMENT);
    		insertComponent(c);
    	}
     
     
    	// Ajoute d'un composant à la fin
    	public synchronized void insertComponentEnd(JComponent c) {
    		select(styledDocument.getLength(), styledDocument.getLength());
    		insertComponentSelect(c);
    	}
    }

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Ca m'a l'air simple à utiliser ta classe et ca répond à tout mes besoins lol, c'est super. Merci

    En plus je commence à comprendre mainteant

    Je peut employer sans problème ta classe dans mon programme et la modifier ?

  10. #10
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    reprendre un code c'est pas interessant.
    tu croi avoir apri quelque chose mais comme c'est pas toi qui la fait, tu aura vite oublier.
    en plus tu dis c'est pour t'entrainer.

    moi je connais des gens qui sont tout le temps a la recherche de code sur internet, ils dise que c'est plus rapide que de tout redeveloper.
    moi je suis pas sur.
    et quand tu leur demande comment ta fais pour faire ca. ils savent meme pas repondre des trucs sur leur code
    sur le moment ca va
    une semaine apres ca va encore
    apres un mois fini ils ont tout oublier.

    tu decouve plein de truc en codant toi meme.

    c'est que mon avis

  11. #11
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par bbclone
    reprendre un code c'est pas interessant.
    tu croi avoir apri quelque chose mais comme c'est pas toi qui la fait, tu aura vite oublier.
    en plus tu dis c'est pour t'entrainer.

    moi je connais des gens qui sont tout le temps a la recherche de code sur internet, ils dise que c'est plus rapide que de tout redeveloper.
    moi je suis pas sur.
    et quand tu leur demande comment ta fais pour faire ca. ils savent meme pas repondre des trucs sur leur code
    sur le moment ca va
    une semaine apres ca va encore
    apres un mois fini ils ont tout oublier.

    tu decouve plein de truc en codant toi meme.

    c'est que mon avis
    Je suis tout à fait d'accord avec toi, mais je me suis renseigné sur internet sur les JTextPane avant qu'il ne donne son code, et maintenant j'ai compris comment on l'emploie cette classe. En plus, c'est pas si dur que ca, ca me semblait beaucoup plus compliqué aux premiers abords.

    C'est vrai que si on fait tout le code soi-même, c'est super bien pour apprendre, et je sais ce que je dis, je suis en train de finaliser une application de 8000 lignes que j'ai entiérement codé moi-même

  12. #12
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    c'etait pas une critque contre toi
    c'est juste un constat

    8000 ligne de code c'est pas grand chose

  13. #13
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par bbclone
    c'etait pas une critque contre toi
    c'est juste un constat

    8000 ligne de code c'est pas grand chose
    T'inquiete je l'ai pas pris contre moi

    Euh, quand meme 8000 lignes de code pour une personne seule, je trouve ca pas mal quand même, mais c'est que mon avis

  14. #14
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    18000lignes de code pour un messenger(javadoc inclu)
    1 seule personne moi

  15. #15
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par bbclone
    18000lignes de code pour un messenger(javadoc inclu)
    1 seule personne moi
    Bon d'accord je m'incline Par contre j'ai aucune idée de combien fait le mien javadoc inclus, 8000 c'est sans commentaire, sans javadoc sans ligne vide.

    Juste un dernier HS(faudrait penser à arrêter ) : Tu as codé dans tes loisirs ou au boulot (école ?) ton messenger ?

  16. #16
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Citation Envoyé par bbclone
    18000lignes de code pour un messenger(javadoc inclu)
    1 seule personne moi
    Bin ça depend de la qualité du code aussi. Si tes 18000 lignes tournent en rond ... C'est pas parce que un programme n'a pas beaucoup de ligne de code qu'il est mauvais ou qu'il ne sert a rien... Ex : le premier basic de micro$oft fesait 8000 lignes de code et il a pas mal servit .

  17. #17
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    oui ok la qualite est importante
    mais en java je sais tres bien ce que je fait.

  18. #18
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 230
    Par défaut
    moi je repart sur les JTextPane
    ce qui fait leur difficulte est le peu de doc dessus
    d'ailleur ta classe est genial!!!
    j'avais passer une aprem a cherche comment faire une sorte de chat multiuser aussi!
    et a la fin il n'y avait que 4 ligne de code en plus (allez une dizaine)
    mais qu'est ce qu'on est content quand ca marche ^^

    8000 et 18000 lignes me donne le tournis quand je pense que mon plus gros code fait 3000 ligne dont une partie qui n'est pas a moi (classe pour une connection ftp)

    mais je suis en train de me rattraper en codant un jeu de role ^^ ca promet d'etre assez gros

  19. #19
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    Citation Envoyé par wichtounet
    Ca m'a l'air simple à utiliser ta classe et ca répond à tout mes besoins lol, c'est super. Merci

    En plus je commence à comprendre mainteant

    Je peut employer sans problème ta classe dans mon programme et la modifier ?

    biensur... tu peux en faire ce que tu veux...

    ++

  20. #20
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par soad
    biensur... tu peux en faire ce que tu veux...

    ++
    Merci, je vais faire avec, je vais l'adapter un peu pour mes besoins, mais ca va à peu près suffire

    Je mets résolu et si j'ai un problème spécifique, j'ouvrirai un sujet plus précis.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Swing] Centré un texte dans un JTextPane
    Par titi_22 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 24/06/2011, 16h09
  2. [Swing] Imprimer des JeditorPane sur plusieurs pages ?
    Par bilou_lelapinou dans le forum AWT/Swing
    Réponses: 22
    Dernier message: 29/11/2006, 22h28
  3. [SWING][JEditorPane] retour à la ligne automatiques
    Par narmataru dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/02/2006, 17h52
  4. [Swing] JeditorPane et HTML
    Par Michel38 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 05/02/2006, 18h42

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