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
| import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.image.BufferedImage;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageProducer;
import java.awt.image.RGBImageFilter;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
/**
*
*/
public class Miniature extends JPanel implements FocusListener{
/**Image à afficher*/
private BufferedImage FImageDisplay;
/**Image de base mémorisée pendant la sélection*/
private BufferedImage FImageDisplayTemp = null;
/**************************************************************************************
* Gestion de l'interface FocusListener
**************************************************************************************/
public void showFocusGained(){
setBorder(new LineBorder(Color.RED));
if (FImageDisplayTemp == null){
RGBImageFilter imf = new darkerFilter();
ImageProducer source = FImageDisplay.getSource();
ImageProducer ip = new FilteredImageSource(source, imf);
java.awt.Image imageFiltree = Toolkit.getDefaultToolkit().createImage(ip);
BufferedImage bufImage = new BufferedImage(FImageDisplay.getWidth(), FImageDisplay.getHeight(), BufferedImage.TYPE_INT_RGB);//imageFiltree.getWidth(null), imageFiltree.getHeight(null), BufferedImage.TYPE_INT_RGB);
bufImage.getGraphics().drawImage(imageFiltree, 0, 0, null);
FImageDisplayTemp = FImageDisplay;
FImageDisplay = bufImage;
}
}
public void focusGained(FocusEvent e) {
showFocusGained();
//Notification du panel englobant tous les composants de type Miniature que l'élément sélectionné a changé
//notifyChangeSelectedPanel();
}
public void focusLost(FocusEvent e) {
setBorder(null);
if (FImageDisplayTemp != null){
FImageDisplay = FImageDisplayTemp;
FImageDisplayTemp = null;
}
}
/**
* Classe permettant d'apliquer un filtre foncé sur une image
*
*/
private class darkerFilter extends RGBImageFilter {
public darkerFilter() {
canFilterIndexColorModel = true;
}
public int filterRGB(int x, int y, int rgb) {
return new Color(rgb).darker().getRGB();
}
}
} |
Partager