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

setCursor on InernalFrame not working b/c of BasicInternalFramUI$BorderListener

XMLWordPrintable

    • b53
    • generic, x86
    • generic, windows_nt

      Name: dbT83986 Date: 01/04/99


      Steps to recreate::
       Create an Internal Frame
       set the cursor to predefined WAIT_CURSOR
       make sure it's selected
       move mouse, cursor appears briefly if you're lucky, then goes back to the default


      Code snipppet of why:
      Lines 867-908
      of javax.swing.plaf.basic.BasicInternalFrameUI.java
      section mouseMoved of inner class BorderListener

              public void mouseMoved(MouseEvent e) {

      if(!frame.isResizable())
      return;

                  if(e.getSource() == frame) {
                      Insets i = frame.getInsets();
                      if(e.getX() <= i.left) {
                          if(e.getY() < resizeCornerSize + i.top)
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.NW_RESIZE_CURSOR));
                          else if(e.getY() > frame.getHeight() - resizeCornerSize - i.bottom)
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.SW_RESIZE_CURSOR));
                          else
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
                      } else if(e.getX() >= frame.getWidth() - i.right) {
                          if(e.getY() < resizeCornerSize + i.top)
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.NE_RESIZE_CURSOR));
                          else if(e.getY() > frame.getHeight() - resizeCornerSize - i.bottom)
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.SE_RESIZE_CURSOR));
                          else
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
                      } else if(e.getY() <= i.top) {
                          if(e.getX() < resizeCornerSize + i.left)
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.NW_RESIZE_CURSOR));
                          else if(e.getX() > frame.getWidth() - resizeCornerSize - i.right)
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.NE_RESIZE_CURSOR));
                          else
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
                      } else if(e.getY() >= frame.getHeight() - i.bottom) {
                          if(e.getX() < resizeCornerSize + i.left)
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.SW_RESIZE_CURSOR));
                          else if(e.getX() > frame.getWidth() - resizeCornerSize - i.right)
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.SE_RESIZE_CURSOR));
                          else
      frame.setCursor(Cursor.getPredefinedCursor(Cursor.S_RESIZE_CURSOR));
                      }
      return;
                  }

      frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
      }
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

      The BasicInternalFrameUI$BorderListener checks the mouse move
      and sets the Cursor to a resizing if neccessary. If cursor's
      (x,y) not near a border, it sets the cursor to CursorDefault
      instead of the cursor set by JComponent's setCursor() method.
      (Review ID: 49018)
      ======================================================================

            mbronsonsunw Mike Bronson (Inactive)
            dblairsunw Dave Blair (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: