@Override public void setPressed(boolean b) { if ((isPressed() == b) || !isEnabled()) { return; } if (!b && isArmed()) { updateState(); } if (b) { stateMask |= PRESSED; } else { stateMask &= ~PRESSED; } fireStateChanged(); if (!isPressed() && isArmed()) { int modifiers = 0; AWTEvent currentEvent = EventQueue.getCurrentEvent(); if (currentEvent instanceof InputEvent) { modifiers = ((InputEvent) currentEvent).getModifiers(); } else if (currentEvent instanceof ActionEvent) { modifiers = ((ActionEvent) currentEvent).getModifiers(); } fireActionPerformed( new ActionEvent( this, ActionEvent.ACTION_PERFORMED, getActionCommand(), EventQueue.getMostRecentEventTime(), modifiers)); } }
// MDM - When the window is resizing, the layout and painting have to take place // immediately. Otherwise, the window flashes and flickers annoyingly. // The best way to tell if the window is being resized (as far as I can tell), is to // check the currentEvent in the EventQueue. I didn't see anything in particular about // the event that tells us what's happening. private boolean isWindowResizing() { return EventQueue.getCurrentEvent() != null; }