Ajouter une balise dans une zone de saisie de texte en appuyant sur un bouton [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
30 mai 2005
-
Messages postés
388
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
3 mai 2006
-
Bonjour,



Tout est dasn le sujet du message.

En faite j'aimerai arriver à faire un truc comme dasn un forum phpbb
lors du postage d'un message, lorsqu'on appuie sur le bouton B, la
balise [b] apparaît, moi j'aimeria faire pareil.





Merci d'avance.

3 réponses

Messages postés
388
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
3 mai 2006
1
comment ca ca mache pas...essaye ça :

remarque : j'ai mis un append() ce qui a pour
effet d'ajouter les balises à la fin, mais tu peux également prendre en
compte la position du caret (par un insert(lesbalises ,
getCaretPosition) ) mais tu auras des problemes avec le
setCaretPosition qui sera a la position de la derniere balise contenu
dans le textArea (lastIndexOf , et donc pas forcement celle que tu
viens de rajouter) enfin à partir de là ce n'est plus de mon ressort...
:)



import javax.swing.JFrame;

import javax.swing.JTextArea;

import javax.swing.Box;

import javax.swing.JScrollPane;

import javax.swing.JButton;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.awt.BorderLayout;




public class APIText extends JFrame implements ActionListener{



JTextArea area = new JTextArea();




public static void main(String[] args){

APIText pouet = new APIText() ;

}




public APIText() {

this.setSize(400 , 300);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.getContentPane().setLayout(new BorderLayout());




Box boite = Box.createHorizontalBox() ;

boite.add( getBouton("Gras" , "balise>gras") );

boite.add( getBouton("Red" , "balise>red") );

boite.add( getBouton("Link" , "balise>link") );


JScrollPane scroll = new JScrollPane(area , JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,


JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

this.getContentPane().add(scroll , BorderLayout.CENTER);

this.getContentPane().add(boite , BorderLayout.SOUTH);




this.setVisible(true);

}




public JButton getBouton(String nom , String action){

JButton res = new JButton(nom);

res.setActionCommand(action);

res.addActionListener(this);

return res ;

}




/* ajout de balise */

public void ajoutBalise(String debut , String fin){

//on ajoute les 2 balises au contenu

area.append(debut + fin);

//la ligne dessous, c'est juste du confort

area.setCaretPosition( area.getText().toString().lastIndexOf(debut)+debut.length() );

//pour redonner le focus (perdu lors du clic sur le bouton)

area.requestFocus(true);

}




/* listener */


public void actionPerformed(ActionEvent e){

String action = e.getActionCommand() ;

if(action.equalsIgnoreCase("balise>gras"))

ajoutBalise("" , "");

else if(action.equalsIgnoreCase("balise>red"))

ajoutBalise("[red]" , "/red");

else if(action.equalsIgnoreCase("balise>link"))

ajoutBalise("[link]" , "/link");

//etc...

}


}



si t'as des questions...
Messages postés
388
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
3 mai 2006
1
méthode bourrin :



ajouterB(){

tontextarea.setText( tontextarea.getText() + "" ; )

tontextarea.setCaretPosition( entre les 2 balises );

}



clic sur bouton b > appeler la methode ajouterB()
Messages postés
4
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
30 mai 2005

désolé mais ça ne veut pas marcher.