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

Reopen 4425334: drag in JList requires two mouse gestures

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 1.4.0
    • client-libs



      Name: jk109818 Date: 01/15/2003


      FULL PRODUCT VERSION :
      java version "1.4.0_01"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0_01-b03)
      Java HotSpot(TM) Client VM (build 1.4.0_01-b03, mixed mode)

      java version "1.4.1_01"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01)
      Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)


      FULL OPERATING SYSTEM VERSION :
      Microsoft Windows XP [Version 5.1.2600]

      ADDITIONAL OPERATING SYSTEMS :
      Should be applicable to all OSs

      A DESCRIPTION OF THE PROBLEM :

      To drag an object from a JList it is required that the
      object is first selected, then, in a second mouse gesture,
      dragged. This is contrary to the expected user experience
      (e.g. in Windows Explorer) where you can select and drag
      in a single gesture. Not that the list selection event
      should not be fired until MOUSE UP to enable dragging an
      object to another pane that might switch contents due to a
      list selection event (c.f. the tree and directory panes of
      Windows Explorer).

      This is a duplicate of 4425334 which should not have been
      closed.

      This IS a bug, even if by design! Compare this with Windows,
      where you can click and drag an object in a list which was
      not previously the selection.


      STEPS TO REPRODUCE:
      1) Compile the below code and execute it.
      2) Press LEFT mouse button on a non-selected item of JList.
      3) Start dragging without releasing the mouse button.

      You will see that nothing gets dragged.



      SOURCE CODE:

      import javax.swing.*;
      import javax.swing.plaf.basic.*;

      import java.awt.*;
      import java.awt.event.*;
      import java.util.*;

      public class BugWithDnDSwing extends JFrame {

      JPanel panel;

      private JTextField tfSource;
      private JTextField tfDest;

      private JList listSource;
      private JList listDest;

      public BugWithDnDSwing() {
      super("BugWithDnDSwing");
      setSize(400,400);
      panel = new JPanel();
      panel.setLayout( null );

      tfDest = new JTextField();
      tfDest.setBounds(150,40,100,20);
      panel.add(tfDest);

      String[] data = {"one", "two", "three", "four"};
      listSource = new JList(data);
      listSource.setBounds(10,40,100,60);
      listSource.setDragEnabled(true);
      panel.add(listSource);

      panel.setVisible(true);
      getContentPane().add(panel);
      setVisible(true);

      addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent ae) {
      System.exit(0);
      }
      });
      }

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




      REPRODUCIBILITY :
      This bug can be reproduced always.
      (Review ID: 178852)
      ======================================================================

            shickeysunw Shannon Hickey (Inactive)
            jkimsunw Jeffrey Kim (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: