keyListener = new KeyHandler();
  protected void installListeners()  {    if (focusListener == null)      focusListener = createFocusListener();    list.addFocusListener(focusListener);    if (listDataListener == null)      listDataListener = createListDataListener();    list.getModel().addListDataListener(listDataListener);    if (listSelectionListener == null)      listSelectionListener = createListSelectionListener();    list.addListSelectionListener(listSelectionListener);    if (mouseInputListener == null)      mouseInputListener = createMouseInputListener();    list.addMouseListener(mouseInputListener);    list.addMouseMotionListener(mouseInputListener);    if (propertyChangeListener == null)      propertyChangeListener = createPropertyChangeListener();    list.addPropertyChangeListener(propertyChangeListener);    // FIXME: Are these two really needed? At least they are not documented.    keyListener = new KeyHandler();    list.addComponentListener(componentListener);    componentListener = new ComponentHandler();    list.addKeyListener(keyListener);  }