FullScreen (Exclusive) Swing Components Fail to Receive Keyboard Input on Java 7 on Mac OS X (Mountain) Lion

Tim Howe tim.howe at bloodhoundcbc.com
Fri Oct 18 11:22:04 PDT 2013


Has there been any movement on this?

We rely on full-screen exclusive mode for our application and this is
blocking us from upgrading past Java 1.6.  I've just checked and the
problem still persists in 1.8.0-ea-b111.

Unfortunately the workaround described here doesn't fully solve the
problem.  Specifically mouse cursor and button highlighting on hover still
don't function normally.

Thanks,
Tim


On 11/2/12 5:26 PM, "Leonid Romanov" <leonid.romanov at oracle.com> wrote:

>Yep, please fill a bug with your latest findings.
>
>On Nov 3, 2012, at 1:14 AM, Eric Bailey <ebailey at acuitus.com> wrote:
>
>> Wow, thanks for the response!  At least in my test example, this indeed
>>restores keyboard input.  I initially though I might have to resort to
>>invokeLaters on the visibility calls, but immediately after works fine:
>> 
>> dev.setFullScreenWindow(f);
>> f.setVisible(false);
>> f.setVisible(true);
>> 
>> I have yet to file a bug.  Would you like one based on this latest
>>information?
>> 
>> Also, I'll be checking my larger app for functionality in a few minutes
>>and will report back.
>> 
>> Thank you,
>> - Eric
>> 
>> 
>> On Nov 2, 2012, at 1:36 PM, Leonid Romanov wrote:
>> 
>>> Well, although I'm not 100% sure yet, but it looks like when we enter
>>>full screen some other window becomes the first responder, hence the
>>>beep. Could you please try the following workaround: after calling
>>>setFullScreenWindow() on a frame, call setVisible(false) followed by
>>>setVisible(true). This, in theory, should restore the correct first
>>>responder. 
>>> 
>>> On Nov 2, 2012, at 10:37 PM, Leonid Romanov <leonid.romanov at
>>>oracle.com> wrote:
>>> 
>>>> Hi,
>>>> Confirming that this issue is reproducible on my Mac as well. Have
>>>>you filled the bug yet?
>>>> 
>>>> Regards,
>>>> Leonid.  
>>>> 
>>>> On Nov 1, 2012, at 11:26 PM, Eric Bailey <ebailey at acuitus.com>
>>>>wrote:
>>>> 
>>>>> Hello,
>>>>> 
>>>>> My company has a Swing application that needs to run in both a
>>>>>windowed context and in a fullscreen, kiosk-like mode.
>>>>> 
>>>>> This application has worked fine for years on OS X, most recently
>>>>>targeting Java 6.  We've been looking to move to Java 7 and to
>>>>>incorporate JavaFX elements, driving us to do compatibility testing
>>>>>with the latest Mountain Lion release (10.8.2 Supplemental) and
>>>>>Oracle's JDK 7u9.
>>>>> 
>>>>> Unfortunately, we noticed a glaring issue while in fullscreen mode:
>>>>>mouse movement and clicks work fine, but keyboard input is not
>>>>>delivered to the components.  Tab also does not work for focus
>>>>>traversal, though the focus subsystem appears to work properly
>>>>>according to FocusListeners and the KeyboardFocusManager.  Most key
>>>>>presses produce a system alert beep in response, though registered
>>>>>KeyListeners and key bindings receive no events.
>>>>> 
>>>>> I have a detailed issue and focused sample code on StackOverflow (I
>>>>>didn't want to burden the message with the 240 line sample):
>>>>> 
>>>>>http://stackoverflow.com/questions/13064607/fullscreen-swing-component
>>>>>s-fail-to-receive-keyboard-input-on-java-7-on-mac-os-x
>>>>> 
>>>>> Digging deeper, we identified that the issue was introduced with
>>>>>7u6, when JavaFX began its inclusion in the mainline distribution.
>>>>>It remains in 7u7 and 7u9, and it affects both Lion 10.7 and Mountain
>>>>>Lion 10.8.  A coworker attributes this to a switch from an AWTView to
>>>>>a NSWindow in 7u6 as the backing for the fullscreen window.
>>>>> 
>>>>> I'll be filing an issue with Oracle soon, but I was hoping to hear
>>>>>of possible workarounds in the interim.
>>>>> 
>>>>> One alternative approach I was pursuing was incorporating
>>>>>com.apple.eawt.FullScreenUtilities.  This option has been included in
>>>>>my sample code, but I have found limited kiosking capabilities.  In
>>>>>particular, I'm hoping to eliminate access to Command-Tab app
>>>>>switching, Mission Control, and Launch Pad, effectively locking the
>>>>>user into my application (it's an education setting).
>>>>>Unfortunately, the prevailing suggestions regarding disabling the
>>>>>Dock (which is responsible for those listed capabilities) revealed
>>>>>that the Dock also handles fullscreen apps, rendering the
>>>>>FullScreenUtilities calls inoperable.
>>>>> 
>>>>> All input is greatly appreciated.
>>>>> 
>>>>> Thank you,
>>>>> Eric Bailey
>>>>> Director, Content Engineering
>>>>> Acuitus
>>>> 
>>> 
>> 



This email message, including any attachment(s), is for the sole use of the intended recipient(s) and may contain confidential and legally privileged information.  If you believe that you are not an intended recipient of this message, please contact the sender by reply email and destroy all copies of the original message.  Any unauthorized use, dissemination, or reproduction of this message by anyone other than an intended recipient is strictly prohibited. BLOODHOUND is a trademark of Constitution Medical, Inc.


More information about the macosx-port-dev mailing list