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

Proper keyboard navigation must be implemented on JSplitPane for all L&Fs

XMLWordPrintable

    • 1.2fcs
    • unknown, x86
    • solaris_2.4, windows_95
    • Not verified

      The following navigation, activation and selection keyboard bindings on The following navigation, activation and selection keyboard bindings on JSplitPane need to be implemented for proper operation and key binding sequences. This needs to be done on all L&Fs (Metal, Windows and Motif).

      JSplitPane:
                      Navigate in - Tab
                     Navigate out - Ctrl+Tab, Ctrl+Shift+Tab
                 Navigate between - Tab, F6 (last element with focus regains
                                             focus when its pane is moved to,
                                             F6 provides CUA compliance)
          Give focus splitter bar - F8
                      Change size - Arrow keys, home, and end
                                    (moves the pane splitter appropriately)

      Usability:
      - A JSplitPane is considered to have focus as soon as one of its child components has the focus.
      - F8 while the JSplitPane (one of its child components is in focus) has the focus gives the divider (splitter, split bar) the focus and allows to move it around with the cursor keys. This resize mode is ended by either another (F8 | Tab) where the focus goes to the next component in the JSplitPane, or by (Ctrl+Tab | Ctrl+Shift+Tab) where the focus goes to the next component outside of the JSplitPane.


      ralph.kar@Eng 1998-07-27
      Here is a test case that can be used to verify the keyboard navigation support in a JSplitPane:

      import com.sun.java.swing.*;
      import java.awt.*;
      import java.awt.event.*;

      public class TestApp extends JFrame
      {
              public TestApp() {
                      super("TestApp (4110480)");

                      String[] listdata = {"JList 1", "JList 2", "JList 3",
                                           "JList 4", "JList 5", "JList 6"};
                      JList list = new JList(listdata);

                      JSplitPane split1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
                              true,
                              new JScrollPane(new JTextArea("Upper\nJTextArea")),
                              new JScrollPane(new JTextArea("Lower\nJTextArea")));
                      JSplitPane split2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                              true, new JScrollPane(list), split1);

                      JPanel panel = new JPanel(new GridLayout(1, 2));
                      panel.add(new JButton("JButton 1"));
                      panel.add(new JButton("JButton 2"));

                      this.getContentPane().add("Center", split2);
                      this.getContentPane().add("South", panel);

                      this.addWindowListener(new WindowAdapter() {
                              public void windowClosing(WindowEvent ev) {
                                      System.exit(0);
                              }
                      });
                      this.setSize(300, 300);
                      this.setVisible(true);
              }

              static public void main(String args[]) {
                      new TestApp();
              }
      }

            rkarsunw Ralph Kar (Inactive)
            ejohnsonsunw Earl Johnson (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: