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

General Drag and Drop conflicts with setUI

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 1.4.2
    • client-libs



      Name: rmT116609 Date: 04/10/2003


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

      FULL OS VERSION :
      Microsoft Windows 2000 [Version 5.00.2195]

      A DESCRIPTION OF THE PROBLEM :
      General Drag and Drop conflicts with setUI

      This is the same as bug 4760426 but applies to other Swing components as well (not just JTree). I have given the example of a JList where Drag and Drop along with updateComponentTreeUI cause a NullPointerException to be thrown when drag and drop is done.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Highlight the word four
      drag it into the list

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      the list now to show one, two, three, four
      NullPointerException is thrown

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      java.lang.NullPointerException

      at javax.swing.plaf.basic.BasicListUI.convertLocationToRow(BasicListUI.java:898)

      at javax.swing.plaf.basic.BasicListUI.convertLocationToModel(BasicListUI.java:961)

      at javax.swing.plaf.basic.BasicListUI.access$200(BasicListUI.java:34)

      at javax.swing.plaf.basic.BasicListUI$ListDropTargetListener.updateInsertionLocation(BasicListUI.java:2240)

      at javax.swing.plaf.basic.BasicDropTargetListener.dragOver(BasicDropTargetListener.java:230)

      at javax.swing.TransferHandler$SwingDropTarget.dragOver(TransferHandler.java:574)

      at sun.awt.dnd.SunDropTargetContextPeer.processMotionMessage(SunDropTargetContextPeer.java:475)

      at sun.awt.dnd.SunDropTargetContextPeer.access$600(SunDropTargetContextPeer.java:52)

      at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchMotionEvent(SunDropTargetContextPeer.java:780)

      at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:737)

      at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:29)

      at java.awt.Component.dispatchEventImpl(Component.java:3493)

      at java.awt.Container.dispatchEventImpl(Container.java:1627)

      at java.awt.Component.dispatchEvent(Component.java:3476)

      at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)

      at java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:3269)

      at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3123)

      at java.awt.Container.dispatchEventImpl(Container.java:1613)

      at java.awt.Window.dispatchEventImpl(Window.java:1606)

      at java.awt.Component.dispatchEvent(Component.java:3476)

      at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)

      at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

      at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)


      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.awt.*;
      import java.awt.datatransfer.*;
      import java.io.*;
      import javax.swing.*;

      public class Test {
        public static void main(String[] args) {
          JFrame frame = new JFrame();
          Container contentPane = frame.getContentPane();
          contentPane.setLayout(new BorderLayout());
          final DefaultListModel model = new DefaultListModel();
          model.addElement("one");
          model.addElement("two");
          model.addElement("three");
          JList list = new JList(model);
          list.setTransferHandler(new TransferHandler() {
            public boolean canImport(JComponent aComponent, DataFlavor[] aDataFlavorsArray) {
              for (int i = 0; i < aDataFlavorsArray.length; i++) {
                if (aDataFlavorsArray[i] == DataFlavor.stringFlavor) {
                  return true;
                }
              }
              return false;
            }

            public boolean importData(JComponent aComponent, Transferable aTransferable) {
              try {
                model.addElement(aTransferable.getTransferData(DataFlavor.stringFlavor));
                return true;
              }
              catch (IOException ex) {
              }
              catch (UnsupportedFlavorException ex) {
              }
              return false;
            }
          });
          contentPane.add(new JScrollPane(list), BorderLayout.CENTER);
          JTextField field = new JTextField("four");
          field.setDragEnabled(true);
          contentPane.add(field, BorderLayout.NORTH);
          frame.setSize(500, 500);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          SwingUtilities.updateComponentTreeUI(frame);
          frame.setVisible(true);
        }
      }
      ---------- END SOURCE ----------
      (Review ID: 183787)
      ======================================================================

            shickeysunw Shannon Hickey (Inactive)
            rmandalasunw Ranjith Mandala (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: