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
| // appeler le fichier SSCCE3.java
// par Nicolas_75
// 25 mars 2007
// http://www.developpez.net/forums/showthread.php?p=1861724
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
import javax.swing.text.*;
public class SSCCE3 extends JLayeredPane {
private JTextPane textpane;
private class MonCarre extends JComponent {
private boolean flag;
public MonCarre() {
// timer pour le clignotement :
java.util.Timer timer = new java.util.Timer();
TimerTask timerTask = new TimerTask() {
public void run() {
flag = !flag; // on bascule le flag
MonCarre.this.repaint(); // on repaint le composant
}
};
timer.schedule(timerTask, 0, 300);
}
@Override protected void paintComponent(Graphics g) {
if (flag) { // uniquement si flag est true... (pour le clignotement)
Graphics2D g2 = (Graphics2D) g;
try {
Rectangle r1 = SSCCE3.this.textpane.modelToView(10);
Rectangle r2 = SSCCE3.this.textpane.modelToView(11);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.6f)); // transparence partielle
g2.setColor(Color.red);
Rectangle2D.Double r = new Rectangle2D.Double(r1.getX(), r1.getY(), r2.getX()-r1.getX(), r1.getHeight());
g2.fill(r);
} catch (BadLocationException ble) { ble.printStackTrace(); }
}
}
}
// Constructeur
public SSCCE3(JTextPane textpane0) {
this.textpane = textpane0;
this.setPreferredSize(this.textpane.getPreferredSize());
this.textpane.setBounds(0, 0, (int) this.textpane.getPreferredSize().getWidth(), (int) this.textpane.getPreferredSize().getHeight());
this.add(this.textpane, JLayeredPane.DEFAULT_LAYER);
MonCarre carre = new MonCarre();
carre.setBounds(0, 0, (int) this.textpane.getPreferredSize().getWidth(), (int) this.textpane.getPreferredSize().getHeight());
this.add(carre, JLayeredPane.PALETTE_LAYER);
}
// point d'entrée du programme (mise en place de la JFrame englobante) :
public static void main(String[] args) {
JFrame myFrame = new JFrame();
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextPane textpane0 = new JTextPane();
try {
textpane0.getStyledDocument().insertString(0, "Bonjour à tous ! :-) ", null);
} catch (BadLocationException ble) { ble.printStackTrace(); }
myFrame.add(new SSCCE3(textpane0));
myFrame.pack();
myFrame.setLocationRelativeTo(null);
myFrame.setVisible(true);
}
} |
Partager