JDK-8013425 : Cursor freeze when launching application via 'X emulator' from Windows
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.swing
  • Affected Version: 7u10
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2013-03-25
  • Updated: 2014-11-17
  • Resolved: 2013-04-30
Related Reports
Duplicate :  
Duplicate :  
Description
FULL PRODUCT VERSION :
Java 1.7.0_10-b18

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows 7 Version 6.1 (Build 7600)

EXTRA RELEVANT SYSTEM CONFIGURATION :
This issue requires launching a Java 7 application via an X emulator. One such configuration:

 X-server: Cygwin/X X Server, Version 1.13.1-1 built on 2012-12-19

A DESCRIPTION OF THE PROBLEM :
When launching a Java 7 Swing application from Linux, via a Windows/X-emulator configuration, the cursor in any text field will freeze once a second Frame in launched from within the same process..

REGRESSION.  Last worked in version 6u31

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Compile and run the attached sample code in Java 7 from an X-emulator so the application originates from Linux, but is visable on Windows

2. Use the JButton to spawn a second JFrame

3. Notice that you can no longer type in either of the text fields.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I would expect both text fields to continue to be usable.
ACTUAL -
The cursor freezes up in both of the texts fields preventing any text from being entered.

REPRODUCIBILITY :
This bug can be reproduced often.

---------- BEGIN SOURCE ----------
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JTextArea;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TestTwoFrames {
    public static void main(String[] args) {
        final JButton button = new JButton( " Open 2nd frame " );
        JFrame frame = createJFrame(button);

        frame.setVisible(true);

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                createJFrame(null).setVisible(true);
            }
        });
    }

    private static JFrame createJFrame(JComponent southie) {
        JFrame frame = new JFrame();

        JTextArea textArea = new JTextArea(10, 50);

        frame.add(textArea);

        if (southie != null) {
            frame.add(southie, BorderLayout.SOUTH);
        }

        frame.pack();

        return frame;
    }

}
---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
Do not spawn a second frame in the same process.