Brilliant, that was precisely the direction I needed. Here is the simple function I ended up with:
(defn- show-popup-from-button
"Displays the popup menu when the gear button is clicked as an
ordinary mouse event."
[target popup event]
(.show popup target (.x (.getPoint event)) (.y (.getPoint event))))
I listened for :mouse-pressed rather than :action because I wanted the menu to show up on the down-stroke, and that turned out to be a good thing because when I quickly tried :action to compare how it would feel, it turned out that the ActionEvent was missing the X and Y coordinates I needed anyway.
I suspect the biggest thing I was missing in my earlier efforts was attaching the popup to the target component, that may be why it was never going away.
Thanks again! Perhaps it is somewhat ironic that one of the authors of the second edition of O’Reilly’s “Java Swing” is finding it so delightful to not have to deal directly with Swing… but then again, that should not really surprise anyone. ;^)