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 :

Inserer des balises html en cliquant sur un JBouton


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut Inserer des balises html en cliquant sur un JBouton
    Bonjour,

    J'aurais une question qui me trotte, je souhaiterais en clinquant sur un bouton comme "gras" que cela m'insert des balises html entre le texte ou le mot que je surlignerais dans un JTextPane et de faire une sorte d'aperçu en dessous du JTextPane du résultat final.

    Comment fait t'ont ?
    Pourriez vous me donner des exemple ou des pistes a suivre ?

    Je vous remercie.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Par défaut
    Il me semble que JTextArea possède des méthodes comme getSelectedText ou getCursorPosition... Regardons la javadoc: Ha ben oui vu que c'est un JTextComponent

    Donc en sachant çà :

    1- Sur le clic du bouton, appelle la méthode du JTextArea.getSelectedText()
    2- Modifie ce String avec tes balise html ou autre
    3- Je te laisse deviner la suite en te servant de la javadoc que je t'ai linké. Tu devrais trouver plein de méthode pour modifier le text de ton JTextArea.

  3. #3
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Tu peut récupérer la position de début et de fin de la sélection, et ensuite tu insère tes balises avec insertString(), en commençant par la fermeture de balise sinon ton offset de fin de sélection ne correspondra plus à la situation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    JTextPane textPane = new JTextPane();
    					int start = textPane.getSelectionStart();
    					int end = textPane.getSelectionEnd();
    					StyledDocument doc = textPane.getStyledDocument();
    					try {
    		  			doc.insertString(end, "</b>", doc.getLogicalStyle(end));
    		  			doc.insertString(start, "<b>", doc.getLogicalStyle(start));
    		  		} 
    		  		catch (BadLocationException e) {
    		  			e.printStackTrace();
    		  		}
    Connait-tu les tutoriels de Sun sur Swing, ils t'aideront énormément je pense. Je te met le lien au cas où.
    http://java.sun.com/docs/books/tutor...nts/index.html

    Bonne prog sur ton éditeur de tuto

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut
    beaucoup pour vos éclairages, liens ...

    je c est pas si c est bon ce que je fait, mais sa ne fait rien du tout, je croi que c est avec les AddDocumentListener, addActionListener et tout les autres puis les actionPerformed et tout sa je suis vraiment perdu.

    pour le moment j ai fait ceci et sa fonctionne pas du tout :

    Code java : 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
    // le boutton
    JButton btnBold = (new JButton("Gras"));
    panel2.add(btnBold, d);
    btnBold.addActionListener (new EditeGras());
     
    // le texte
    JTextPane editeur = (new JTextPane());
    panel2.add(editeur, d);
    editeur.getDocument (). addDocumentListener (this); 
     
    // l ecouteur
    class EditeGras implements DocumentListener{
    	  public void insertUpdate(DocumentEvent arg0){
     
    		  int start = editeur.getSelectionStart();
    		  int end = editeur.getSelectionEnd();
    		  StyledDocument doc = editeur.getStyledDocument();
    		  try	{
    		  	doc.insertString(end, "</b>", doc.getLogicalStyle(end));
    		  	doc.insertString(start, "<b>", doc.getLogicalStyle(start));
    		  } 
    		  catch (BadLocationException ev){
    		  	ev.printStackTrace();
    		  }	
    	}	
    }

    j aurais besoin de quelque éclairage supplémentaire, car la je croi que je fait n'importe nawak, .

  5. #5
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Je pense en effet que tu t'embrouille. Le code qui t'a été donné doit être exécuté dans un ActionListener au clic sur ton bouton. Je pense que ça donnerait un truc de ce genre.
    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
     
    // le boutton
    JButton btnBold = (new JButton("Gras"));
    panel2.add(btnBold, d);
    btnBold.addActionListener (new EditeGras());
     
    // le texte
    JTextPane editeur = (new JTextPane());
    panel2.add(editeur, d);
    editeur.getDocument (). addDocumentListener (this); 
     
    // l ecouteur
    class EditeGras implements ActionListener {
    	  public void actionPerformed(ActionEvent e) {
     
    		  int start = editeur.getSelectionStart();
    		  int end = editeur.getSelectionEnd();
    		  StyledDocument doc = editeur.getStyledDocument();
    		  try	{
    		  	doc.insertString(end, "</b>", doc.getLogicalStyle(end));
    		  	doc.insertString(start, "<b>", doc.getLogicalStyle(start));
    		  } 
    		  catch (BadLocationException ev){
    		  	ev.printStackTrace();
    		  }	
    	}	
    }

  6. #6
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    En effet, guigui5931 à raison.

    ActionListener est l'interface qui permet de gérer une action (clic ou entrer ou espace je sais plus) sur les boutons notamment, mais aussi sur les items des menus et surement quelques autres...

    DocumentListener est l'interface qui gère les changement à l'intérieur du Document de ton JTextPane (ou JEditorPane aussi je crois), comme l'insertion ou la suppression de caractères.

    Pour chaque "Listener" il y a des méthodes associés qui sont appelés lorsqu'un évènement est déclanché. Par exemple pour un ActionListener, la méthode actionPerformed est appelé lorsque l'utilisateur clic (valide) sur ton bouton.
    Autre exemple, pour un DocumentListener, la méthode insertUpdate est appelé lorsque du texte est inséré dans le document.

    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
    JButton btnBold = (new JButton("Gras"));
    panel2.add(btnBold, d);
    btnBold.addActionListener (new EditeGras());
     
    // le texte
    JTextPane editeur = (new JTextPane());
    panel2.add(editeur, d);
    editeur.getDocument (). addDocumentListener (new TextListener()); 
     
    // l ecouteur
    class EditeGras implements ActionListener {
    	  public void actionPerformed(ActionEvent e) {
     	       // l'utilisateur a cliqué sur un élément associé au listener
                   if (e.getSource == btnBold) { // c'est sur mon bouton btnBold }
                   if (SwingUtilities.isLeftMouseButton(e)) { // clic souris bouton gauche  }
    	}	
    }
     
    class TextListener implements DocumentListener{
    	  public void insertUpdate(DocumentEvent arg0){
                   // du texte a été inséré dans le document du JTextPane
              }
    }

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut
    Merci pour toutes ses précisions, âpres avoir refait comme on me le dit, sa ne change rien, j'écris un mot, puis le surligne et clique sur le bouton et rien ne se produit, pas de balise qui s'ajoute autour du mot.

    Aurais je oublier quelque chose ?

    Code java : 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
    //Le bouton pour insérer les balises <b>blabla</b>
    JButton btnBold = (new JButton("Gras"));
    btnBold.addActionListener (new EditeGras());
     
    //Le document texte
    JTextPane editeur = (new JTextPane());
    editeur.getDocument().addDocumentListener (new TextListener()); 
     
    //Les écouteurs
    class EditeGras implements ActionListener {
    	  public void actionPerformed(ActionEvent e) {
     
    		  Object source = e.getSource();  
     
    		if (source == btnBold) 	
    		{ 	
    				int start = editeur.getSelectionStart();
    				int end = editeur.getSelectionEnd();
    					StyledDocument _doc = editeur.getStyledDocument();
    			try
    			{
    				_doc.insertString(end, "</b>", _doc.getLogicalStyle(end));
    				_doc.insertString(start, "<b>", _doc.getLogicalStyle(start));
    			} 
    			catch (BadLocationException ev)
    			{
    				ev.printStackTrace();
    			}	
    		} 
    	}	
    }
    class TextListener implements DocumentListener{	
    	public void insertUpdate(DocumentEvent arg0){
    		// que met t on ici ?
            }
    	public void changedUpdate(DocumentEvent arg0) {
    		// que met t on ici ?
    	}
    	public void removeUpdate(DocumentEvent arg0) {	
    	       // que met t on ici ?
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inserer des balises html dans une page
    Par owenho dans le forum WordPress
    Réponses: 1
    Dernier message: 23/01/2014, 16h14
  2. Réponses: 4
    Dernier message: 30/05/2011, 12h14
  3. Inserer des balise html dans une zone de text du rapport
    Par jacky2677 dans le forum iReport
    Réponses: 1
    Dernier message: 12/08/2008, 12h08
  4. [DOM] utiliser les fonctions Node sur des balises html
    Par durthu dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/10/2007, 14h42
  5. faire passer des balise html d'un XML vers un XLS
    Par shaftJackson dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 26/04/2006, 16h07

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