Hi Kenneth, One thing you could do to narrow down the problem is to test with various versions of ImageJ. You can download all prior release versions from here: https://maven.scijava.org/#nexus-search;gav~net.imagej~ij~~~~kw,versionexpand
The last version released in 2020, according to the release notes <https://imagej.net/ij/notes.html>, is 1.53g. By doing a binary search through the releases, you should be able to figure out which release broke the plugin. Regards, Curtis On Mon, Oct 21, 2024 at 11:00 AM Kenneth Sloan <[email protected]> wrote: > I’m reviving an ImageJ Java plugin from 2020. It uses a KeyListener. > The new build does not get any keypresses. I’ve looked at the current > documentation, and can’t find a problem. The plugin is fairly large. I’ll > try to make a minimal version - but would be happy to share it on my > ImageJ Update Site (see below). > > Remember - this plugin worked fine in 2020, but now fails. > > Here is what I think is the relevant code: > > // listen to keyboard - stop IJ from listening! > win = ipl.getWindow(); // delayed until we are SURE it's visible > IJ.log("win = "+win); > canvas = win.getCanvas(); > IJ.log("canvas = "+canvas); > win.removeKeyListener(IJ.getInstance()); > canvas.removeKeyListener(IJ.getInstance()); > IJ.log("removed IJ Listeners"); > win.addKeyListener(this); > canvas.addKeyListener(this); > ImagePlus.addImageListener(this); > IJ.log("added Listeners"); > > … > > win.requestFocus(); > IJ.log("sampling...”); > category = sampleAt(xList.get(currentSamplePoint), > yList.get(currentSamplePoint)); > IJ.log("sampled”); > > … > > while(true) > { > synchronized(this) > { > IJ.log("waiting..."); > wait(); // keyPressed wakes us > IJ.log("woken up!"); > } > > … > > // key pressed! > // keyCode, keyChar, and modifiers are current > If(keyCode == KeyEvent.VK_SPACE) return -1; // DELETE does > not work > if(keyCode == KeyEvent.VK_ENTER) return -2; // no mas! > int category = keyCode - KeyEvent.VK_1; // 1-based keys; > 0-based category > if(category < 0) continue; // try again! > if(category >= choices.length) continue; // try again! > return category; // good category! > } > ... > @Override > public void keyPressed(KeyEvent e) > { > IJ.log("keyPressed"); > keyCode = e.getKeyCode(); > keyChar = e.getKeyChar(); > modifiers = e.getModifiers(); > IJ.log(" "+keyCode+" "+keyChar+" "+modifiers); > synchronized(this) > { > IJ.log("notifying"); > notify(); > IJ.log("notified"); > } > } > > And here is the IJ Log: > > win = 16385_175994_R_IR_OCT_20120429-09_8C3F4720.bmp > canvas = ij.gui.ImageCanvas[canvas1,5,44,384x496] > removed IJ Listeners > added Listeners > sampling... > sampleAt(90.05, 63.05) > waiting... > > It looks to me as if we “wait” and then never get a KeyPress event. > > When I press keys, I seem to get the usual ImageJ responses (does this > mean that the IJ Listeners were NOT removed? > > > > Update site: CreativeComputation > Plugin name: AVL_Area_Fraction > > — > Kenneth Sloan > [email protected] > Vision is the art of seeing what is invisible to others. > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html
