probleme de mise en forme avec le JEditorPane
Bonjour depuis un moment j'essaye de mettre en forme du texte, j'ai essayé le JEditorPane sans succès, puis le JTextPane sans plus c'est pourquoi je m'adresse à vous. J'essaye de faire un simple editeur de texte, on entre le texte, et on selectionne le texte a mettre en forme voici ce que j'ai en m'appuyant sur diverses réponses de ce forum ce qui ne m'aide pas beaucoup :
Code:
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
|
package app;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.JToolBar;
import javax.swing.text.BadLocationException;
import javax.swing.text.SimpleAttributeSet;
public class EditorPane extends JFrame
{
private static final long serialVersionUID = 5061819212845049159L;
private JToolBar tb = new JToolBar();
private JButton bg = new JButton("gras");
private JPanel pan = new JPanel(new BorderLayout());
private JTextPane ed = new JTextPane();
public EditorPane()
{
this.setTitle("Test EditorPane");
this.setContentPane(pan);
//la barre
pan.add(tb, BorderLayout.NORTH);
tb.add(bg);
bg.addActionListener(new ActionBouton(ed, "b"));
//le texte
pan.add(ed, BorderLayout.CENTER);
ed.setPreferredSize(new Dimension(300,400));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setLocationRelativeTo(null);
}
class ActionBouton implements ActionListener
{
private JTextPane ed;
private String balise;
public ActionBouton(JTextPane ed, String balise)
{
this.ed = ed;
this.balise = balise;
}
@Override
public void actionPerformed(ActionEvent e)
{
String ch = ed.getSelectedText();
int deb = ed.getSelectionStart();
SimpleAttributeSet att = new SimpleAttributeSet();
att.addAttribute(balise, ch);
try
{
ed.getDocument().insertString(deb, ch, null);
ed.select(deb, ch.length());
ed.setCharacterAttributes(att, true);
}
catch (BadLocationException e1)
{
e1.printStackTrace();
}
ed.setText(ed.getText());
}
}
public static void main(String[] args)
{
EditorPane ed = new EditorPane();
ed.setVisible(true);
}
} |
dans ce code le texte que je veux mettre en gras est juste recopié sans être mis en forme. Bref avez des suggestions a faire ?