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

Editable JCombobox swallows Shift + Tab

XMLWordPrintable

      OPERATING SYSTEM(S):
      Windows XP

      FULL JDK VERSION(S):
      java version "1.5.0_08"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
      Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)

      DESCRIPTION:
      The JComboBox component swallows Shift + Tab which is meant for reverse traversal.

      The same case works fine in 1.4.2.

      Steps to Reproduce
      ------------------

      1. Run the following sample code specified below:

      import java.awt.BorderLayout;
      import java.awt.Container;
      import java.awt.ContainerOrderFocusTraversalPolicy;
      import java.awt.DefaultFocusTraversalPolicy;
      import java.awt.FlowLayout;
      import java.awt.KeyboardFocusManager;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import java.awt.event.FocusEvent;
      import java.awt.event.FocusListener;
      import javax.swing.*;

      public class Sample{
      JFrame f1;
      JButton b1,b2,b3,b4,b5;
      JComboBox cb1;
      JPanel p1,p2;
      Sample()
      {
      f1=new JFrame("Sample");
      p1=new JPanel();
      p2=new JPanel();

      b1=new JButton("Button1");
      b1.setFocusable(true);
      b2=new JButton("Button2");
      b2.setFocusable(true);

      b3=new JButton("Container Order");
      b4=new JButton("Default Order");
      b5=new JButton("Layout Order");
      b3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
      KeyboardFocusManager kFocusMan = KeyboardFocusManager.getCurrentKeyboardFocusManager();
      kFocusMan.setDefaultFocusTraversalPolicy(new ContainerOrderFocusTraversalPolicy());
      f1.setFocusTraversalPolicy(KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalPolicy());

      }
      });
      b4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
      KeyboardFocusManager kFocusMan = KeyboardFocusManager.getCurrentKeyboardFocusManager();
      kFocusMan.setDefaultFocusTraversalPolicy(new DefaultFocusTraversalPolicy());
      f1.setFocusTraversalPolicy(KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalPolicy());
      }
      });
      b5.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
      KeyboardFocusManager kFocusMan = KeyboardFocusManager.getCurrentKeyboardFocusManager();
      kFocusMan.setDefaultFocusTraversalPolicy(new LayoutFocusTraversalPolicy());
      f1.setFocusTraversalPolicy(KeyboardFocusManager.getCurrentKeyboardFocusManager().getDefaultFocusTraversalPolicy());
      }
      });
      cb1=new JComboBox();
      cb1.setName("Editable ComboBox");
      cb1.setEditable(true);
      cb1.setFocusable(true);

      f1.setLayout(new BorderLayout());
      p1.setLayout(new FlowLayout());
      p1.setBorder(BorderFactory.createCompoundBorder(BorderFactory
      .createTitledBorder("Test"), BorderFactory
      .createEmptyBorder(5, 5, 5, 5)));
      p2.setBorder(BorderFactory.createCompoundBorder(BorderFactory
      .createTitledBorder("Focus Traversal"), BorderFactory
      .createEmptyBorder(5, 5, 5, 5)));
      p2.setLayout(new FlowLayout());
      p1.add(b1);
      p1.add(cb1);
      p1.add(b2);
      p2.add(b3);
      p2.add(b4);
      p2.add(b5);
      f1.add(p1, BorderLayout.CENTER);
      f1.add(p2, BorderLayout.SOUTH);
      f1.setSize(400,200);
      f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      f1.setVisible(true);
      }
      public static void main(String[] args) {
      new Sample();
      }
      }

      3. Choose Container Order traversal and Press tab in the Keyboard till the control comes to the JComboBox.
      4. Then press Shit + Tab then the control must come to the Button1 component.
      5. But it doesn't come, in this case.
      6. The same scenario is seen in default traversal policy. But in Layout Traversal policy it is working fine.

            alexp Alexander Potochkin (Inactive)
            elarsen Erik Larsen (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: