Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8032872

[macosx] Cannot select from JComboBox in a JWindow

    XMLWordPrintable

Details

    • b08
    • os_x

    Backports

      Description



        Issue with Java version 7u17 / Mac only.

        Add a JComboBox to a JWindow. Show the window from a parent frame. The combo
        can be opened, but it does not allow selection from the mouse. The popup
        closes on mousePressed, but no selection is made. On other OSes and on Java
        1.6 the item is selected correctly on mouseReleased.

        Test case:
        import java.awt.FlowLayout;

        import java.awt.Point;
        import java.awt.Window;

        import java.awt.event.ActionEvent;

        import javax.swing.AbstractAction;
        import javax.swing.JButton;
        import javax.swing.JComboBox;
        import javax.swing.JFrame;
        import javax.swing.JLabel;
        import javax.swing.JPanel;
        import javax.swing.JWindow;
        import javax.swing.SwingUtilities;

        public class TestClass {
            public static void main(String[] args) {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(300, 200);
                f.setLocationRelativeTo(null);

                f.setLayout(new FlowLayout());
                
                final JButton popButton = new JButton("Press me");
                popButton.addActionListener(new AbstractAction() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        Window parentWin =
        SwingUtilities.windowForComponent(popButton);
                        JWindow popup = new JWindow(parentWin);
                        
                        JPanel panel = new JPanel(new FlowLayout());
                        panel.add(new JLabel("Cannot Select with Mouse:"));
                        panel.add(new JComboBox(new String[] { "One", "Two", "Three"
        }));
                        popup.add(panel);
                        Point p = popButton.getLocationOnScreen();
                        popup.add(panel);
                        popup.pack();
                        popup.setLocation(p.x, p.y + popButton.getHeight());
                        popup.setVisible(true);
                    }
                });

                f.add(popButton);
                f.setVisible(true);
            }
        }

        Attachments

          Issue Links

            Activity

              People

                dmarkov Dmitry Markov
                asaha Abhijit Saha
                Votes:
                0 Vote for this issue
                Watchers:
                8 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: