fmHeight / 2
(fmHeight / 2) - botOffset
   public void drawCursor(Screen5250 s,int row, int col,                           int fmWidth, int fmHeight,                           boolean insertMode, int crossHair,                           int cursorSize, Color colorCursor,                           Color colorBg,Color colorWhite,                           Font font) {//      synchronized (lock) {         Graphics2D g2 = getDrawingArea();//         if (g2 == null)//            return;         switch (cursorSize) {            case 0:               cursor.setRect(                           fmWidth * (col),                           (fmHeight * (row + 1)),                           fmWidth,                           1                           );               break;            case 1:               cursor.setRect(                           fmWidth * (col),                           (fmHeight * (row + 1) - fmHeight / 2),                           fmWidth,                           fmHeight / 2                           );               break;            case 2:               cursor.setRect(                           fmWidth * (col),                           (fmHeight * row),                           fmWidth,                           fmHeight                           );               break;         }         if (insertMode && cursorSize != 1) {               cursor.setRect(                           fmWidth * (col),                           (fmHeight * (row + 1) - fmHeight / 2),                           fmWidth,                           fmHeight / 2                           );         }         Rectangle r = cursor.getBounds();         r.setSize(r.width,r.height);         g2.setColor(colorCursor);         g2.setXORMode(colorBg);         g2.fill(cursor);//         cursorActive = true;         s.updateImage(r);         switch (crossHair) {            case 1:  // horizontal               g2.drawLine(0,fmHeight * (row + 1),bi.getWidth(null),fmHeight * (row + 1));               s.updateImage(0,fmHeight * (row + 1),bi.getWidth(null),1);               break;            case 2:  // vertical               g2.drawLine(r.x,0,r.x,bi.getHeight(null) - fmHeight - fmHeight);               s.updateImage(r.x,0,1,bi.getHeight(null) - fmHeight - fmHeight);               break;            case 3:  // horizontal & vertical               g2.drawLine(0,fmHeight * (row + 1),bi.getWidth(null),fmHeight * (row + 1));               g2.drawLine(r.x,0,r.x,bi.getHeight(null) - fmHeight - fmHeight);               s.updateImage(0,fmHeight * (row + 1),bi.getWidth(null),1);               s.updateImage(r.x,0,1,bi.getHeight(null) - fmHeight - fmHeight);               break;         }         g2.dispose();         g2 = getWritingArea(font);         g2.setPaint(colorBg);         g2.fill(pArea);         g2.setColor(colorWhite);//         g2.drawString((getRow(lastPos) + 1) + "/" + (getCol(lastPos) + 1)//                        ,(float)pArea.getX(),//                        (float)pArea.getY() + fmHeight);         g2.drawString((row + 1) + "/" + (col + 1)                        ,(float)pArea.getX(),                        (float)pArea.getY() + fmHeight);         s.updateImage(pArea.getBounds());         g2.dispose();         // tell waiting threads to wake up//         lock.notify();//      }   }