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
| // Nicolas_75, 10 juillet 2007
// http://www.developpez.net/forums/showthread.php?p=2283513
// appeler le fichier Exemple097_StyledDocumentAvecSurlignage.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class Exemple097_StyledDocumentAvecSurlignage extends JFrame {
private JTextPane textpane = new JTextPane(); // contient le texte
private StyledDocument sdoc; // StyledDocument correspondant au JTextPane
// SimpleAttributeSet pour le texte surligné ou non :
private SimpleAttributeSet yellowHighlighted = new SimpleAttributeSet();
{
StyleConstants.setBackground(yellowHighlighted, Color.yellow);
}
private SimpleAttributeSet whiteHighlighted = new SimpleAttributeSet();
// constructeur :
public Exemple097_StyledDocumentAvecSurlignage() {
// caractéristiques générales de la frame :
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// JTextPane et StyledDocument contenant le texte :
String text = "La terre est bleue comme une orange...\n\nLa terre est bleue comme une orange\nJamais une erreur les mots ne mentent pas\nIls ne vous donnent plus à chanter\nAu tour des baisers de s'entendre\nLes fous et les amours\nElle sa bouche d'alliance\nTous les secrets tous les sourires\nEt quels vêtements d'indulgence\nÀ la croire toute nue.\n\nLes guêpes fleurissent vert\nL'aube se passe autour du cou\nUn collier de fenêtres\nDes ailes couvrent les feuilles\nTu as toutes les joies solaires\nTout le soleil sur la terre\nSur les chemins de ta beauté.\n\nPaul ELUARD, L'Amour la poésie (1929)";
sdoc = textpane.getStyledDocument();
try {
sdoc.insertString(0, text, null);
} catch (BadLocationException e) { e.printStackTrace(); }
// JPanel contenant les deux boutons :
JPanel buttonPanel = new JPanel();
// bouton de surlignement en jaune :
JButton button1 = new JButton("surligne sélection en jaune");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if ((!(sdoc==null))&&(!(textpane.getSelectedText()==null))) {
sdoc.setCharacterAttributes(textpane.getSelectionStart(), textpane.getSelectedText().length(), yellowHighlighted, false);
}
}
});
// bouton d'annulation du surlignement en jaune :
JButton button2 = new JButton("enlève le surlignement de la sélection");
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if ((!(sdoc==null))&&(!(textpane.getSelectedText()==null))) {
sdoc.setCharacterAttributes(textpane.getSelectionStart(), textpane.getSelectedText().length(), whiteHighlighted, true);
}
}
});
// mise en place du contenu de la fenêtre :
buttonPanel.add(button1);
buttonPanel.add(button2);
this.textpane.setEditable(true);
JScrollPane scroll = new JScrollPane(textpane);
scroll.setPreferredSize(new Dimension(300,200));
JPanel bigPanel = new JPanel();
bigPanel.setLayout(new BorderLayout());
bigPanel.add(buttonPanel, BorderLayout.CENTER);
bigPanel.add(scroll, BorderLayout.SOUTH);
this.getContentPane().add(bigPanel, BorderLayout.SOUTH);
// affichage de la frame :
this.pack();
this.setVisible(true);
}
// "main" de démonstration
public static void main(String[] args) {
new Exemple097_StyledDocumentAvecSurlignage();
}
} |
Partager