Thanks! I filed the bug but it isn't available quite yet: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7193703
My situation is probably unique because my JProgressBar sometimes doesn't get shown onscreen. I found a work around though, which is to call updateUI() on it after setIndeterminate(true) - this stops the timer plus InvocationEvents. I've attached my sample code below. jeff On Aug 23, 2012, at 5:11 PM, Sergey Bylokhov wrote: > Hi, Jeff. > You can try to use: > http://bugs.sun.com/bugdatabase/ > > Probably some related issues: > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7168926 > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7124525 > > 24.08.2012 00:55, Jeff Martin wrote: >> How do I search for known JRE 7 Swing bugs (or file one)? >> >> I find that in JRE7 for Mac, if you have a JProgressBar set to Indeterminate >> that is hanging around off screen, it sends constant timer events. >> >> jeff import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.SwingUtilities; /** * A class to show JProgressBar bug on Mac OS. */ public class ProgressBarBug extends EventQueue { static JProgressBar _pb = new JProgressBar(); public static void main(final String args[]) { if(!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(new Runnable() { public void run() { main(args); }}); return; } // Create a ProgressBar offscreen, setIndeterminate (turn it off) and hold on to ProgressBar _pb = new JProgressBar(); _pb.setIndeterminate(true); // This starts timer, even though offscreen or turned off _pb.setIndeterminate(false); //_pb.updateUI(); <- This stops the timer // Register EventQueue to print non-stop timer InvocationEvents try { Toolkit.getDefaultToolkit().getSystemEventQueue().push(new ProgressBarBug()); } catch(Exception e) { throw new RuntimeException(e); } // Create and show window to keep app around new JFrame("Test Frame").setVisible(true); } // This method shows all the non-stop timer InvocationEvents public void dispatchEvent(AWTEvent anEvent) { if(anEvent instanceof InvocationEvent) System.out.println(anEvent); super.dispatchEvent(anEvent); } }
