Bonjour,
j'ai un petit problème avec des images que je met dans une JTable.
Ces images sont redimensionnées pour qu'elles aient la même taille, et j'y ajoute un MouseListener pour qu'elles soient clicables.
Or selon les images l'action n'est pas realisée
A noter que mon application est une Applet.

voila un peu de code, si quelqu'un pouvait me dire d'où cela peut venir :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
 
/*Ma class editor */
public class ImageTableCellEditor extends DefaultCellEditor {
 
    protected JLabel label;
    protected ImageIcon image;
 
    public ImageTableCellEditor(JCheckBox checkBox) {
        super(checkBox);
 
// ici je redefinit la methode paint et je redimensionne mon image
        label = new JLabel(){
            public void paint(Graphics arg0) {
 
 
                Graphics2D g2d = (Graphics2D)arg0;
                g2d.drawImage(image.getImage(),20,0,35,35,this);
                g2d.dispose();
 
            }
        };
        //ajout du listener
        label.addMouseListener(new MouseListener() {
            public void mouseClicked(MouseEvent e) {
                fireEditingStopped();
            }
            public void mouseEntered(MouseEvent e) {
                label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR) );
            }
            public void mouseExited(MouseEvent e) {
                label.setCursor(Cursor.getDefaultCursor() );
            }
            public void mousePressed(MouseEvent e) {}
            public void mouseReleased(MouseEvent e) {}
        });
 
    }
 
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        image = (ImageIcon)value;
        label.setIcon(image);
        isPushed = true;
 
        return label;
    }
 
 
    public Object getCellEditorValue() {
        if (isPushed)  {
            if(value.toString() != null && !value.toString().equals("") )
                System.out.println("Mon action ici ");
        }
        isPushed = false;
 
        return (ImageIcon)label.getIcon();
    }
    public boolean stopCellEditing() {
        isPushed = false;
        return super.stopCellEditing();
    }
 
 
    protected void fireEditingStopped() {
        super.fireEditingStopped();
    }
 
}
 
/* Ma classe renderer */
public class ImageTableCellRenderer extends JLabel implements TableCellRenderer {
 
    protected ImageIcon image;
 
    public ImageTableCellRenderer() {
        super();
    }
 
    public void paint(Graphics arg0) {
 
 
        Graphics2D g2d = (Graphics2D)arg0;
        g2d.drawImage(image.getImage(),20,0,35,35,this);
        g2d.dispose();
 
    }
 
    public Component getTableCellRendererComponent(JTable table, Object i, boolean isSelected, boolean hasFocus, int row, int column) {
 
        image = (ImageIcon)i;
        setIcon( image );
 
        addMouseListener(new MouseListener() {
 
            public void mouseClicked(MouseEvent e) {}
            public void mouseEntered(MouseEvent e) {
                setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR) );
            }
            public void mouseExited(MouseEvent e) {
                setCursor(Cursor.getDefaultCursor() );
            }
            public void mousePressed(MouseEvent e) {}
            public void mouseReleased(MouseEvent e) {}
        });
 
        return this;
    }
 
}