Bonjour,
Afin de pouvoir éditer une image de type ImagePlus, j'ai créé un plugin imageJ dont le code est repris ci-dessous.
En résumé, je crée une image de type ImageCanvas à partir d'ImagePlus et ce que je tente de faire c'est de créer des menus pop-up lorsque l'utilisateur clique sur l'image que vous pouvez trouvez à l'adresse suivante ici :
http://sites.google.com/site/fcjunic...attredirects=0
Le problème c'est que les menus ne s'affiche pas quand je clique ! Je ne vois pas comment régler le problème, cela fait 2 jours que je cherche et j'ai vraiment besoin d'aide (c'est assez urgent).
Pouvez-vous m'aidez svp ?
Merci
N.B.
Vous trouvez toute la doc imageJ ici : http://rsb.info.nih.gov/ij/developer/api/
Et le code source ici : http://rsbweb.nih.gov/ij/developer/source/index.html
Maintenant voici le code source du plugin que j'ai développé :
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174 // ImageJ libraries import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import ij.IJ; import ij.ImagePlus; import ij.gui.ImageCanvas; import ij.gui.ImageLayout; import ij.io.OpenDialog; import ij.io.Opener; import ij.plugin.PlugIn; import ij.process.ImageProcessor; // SWING libraries import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; // I/O libraries public class Edit_ implements PlugIn { private static final long serialVersionUID = 1L; private static final int DEFAULT_HEIGHT = 650; private static final int DEFAULT_WIDTH = 800; /** * Run method */ public void run(String arg0) { // Dialog box OpenDialog od = new OpenDialog("Open an image file",""); String dir = od.getDirectory(); String nameFile = od.getFileName(); if (nameFile==null) { IJ.noImage(); return; } // Open the image Opener opener = new Opener(); ImagePlus imp= opener.openImage(dir, nameFile); imp.show(); ImagePanel iP = new ImagePanel (imp); JFrame frame = new JFrame ("Image Editor"); frame.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); frame.getContentPane().add(iP); frame.setVisible (true); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); IJ.setTool("Wand Tool"); } } class ImagePanel extends JPanel { private static final long serialVersionUID = 1L; protected ImagePlus imp; protected ImageCanvas ic; // Constructor public ImagePanel (ImagePlus imp){ super(); this.imp = imp; this.ic = new ImageCanvas2(imp); setLayout(new ImageLayout(ic)); add(ic); } } class ImageCanvas2 extends ImageCanvas implements ActionListener { private static final long serialVersionUID = 1L; ImagePlus imagePlus; ImageProcessor ip; ImagePanel imgPanel; // Pop-up Menus private JPopupMenu menuAgregat = null; private JPopupMenu menuArtefact = null; private JPopupMenu menuNoyau = null; // Menu Items private JMenuItem toAgregat = null; private JMenuItem toArtefact = null; private JMenuItem toNoyau = null; private JMenuItem setCells = null; // Constructor public ImageCanvas2(ImagePlus imp) { super (imp); imagePlus = imp; ip = imp.getProcessor(); menuAgregat = new JPopupMenu(); menuArtefact = new JPopupMenu(); menuNoyau = new JPopupMenu(); // Items toAgregat = new JMenuItem("> Aggregate"); toArtefact = new JMenuItem("> Artefact"); toNoyau = new JMenuItem("> Single Nucleus"); setCells = new JMenuItem("Set number of cells"); menuAgregat.add(toNoyau); menuAgregat.add(toArtefact); menuAgregat.add(setCells); menuArtefact.add(toNoyau); menuArtefact.add(toAgregat); menuNoyau.add(toAgregat); menuNoyau.add(toArtefact); menuAgregat.addMouseListener(this); menuArtefact.addMouseListener(this); menuNoyau.addMouseListener(this); // Add to listener toNoyau.addActionListener(this); toAgregat.addActionListener(this); toArtefact.addActionListener(this); setCells.addActionListener(this); } public void mouseClicked (MouseEvent e) { Point pointInImage = this.getCursorLoc(); int pixel = ip.getPixel(pointInImage.x, pointInImage.y); int r = (pixel>>16)&0xff; if (r == 250) { menuAgregat.show(this, e.getX(), e.getY()); } else if (r == 25) { menuArtefact.show(this, e.getX(), e.getY()); } else if (r == 0) { menuNoyau.show(this, e.getX(), e.getY()); } else { IJ.log("Vous n'avez pas selectionner une particule !"); } } @Override public void actionPerformed(ActionEvent e) { if(e.getSource().equals(toAgregat)){ IJ.showMessage("Vers agregat"); } else if(e.getSource().equals(toNoyau)){ IJ.showMessage("Vers Noyau"); } else if(e.getSource().equals(toArtefact)){ IJ.showMessage("Vers Artefact"); } else if(e.getSource().equals(setCells)){ IJ.showMessage("Set Cells"); } } }
Partager