Here you can find the source of makeCursor(BufferedImage img, int hotx, int hoty, String name)
public static Cursor makeCursor(BufferedImage img, int hotx, int hoty, String name)
//package com.java2s; /*/*from ww w .j a v a2 s. c om*/ * Copyright © 2009-2011 Rebecca G. Bettencourt / Kreative Software * <p> * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * <a href="http://www.mozilla.org/MPL/">http://www.mozilla.org/MPL/</a> * <p> * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * <p> * Alternatively, the contents of this file may be used under the terms * of the GNU Lesser General Public License (the "LGPL License"), in which * case the provisions of LGPL License are applicable instead of those * above. If you wish to allow use of your version of this file only * under the terms of the LGPL License and not to allow others to use * your version of this file under the MPL, indicate your decision by * deleting the provisions above and replace them with the notice and * other provisions required by the LGPL License. If you do not delete * the provisions above, a recipient may use your version of this file * under either the MPL or the LGPL License. * @since PowerPaint 1.0 * @author Rebecca G. Bettencourt, Kreative Software */ import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Toolkit; import java.awt.image.BufferedImage; public class Main { public static Cursor makeCursor(int width, int height, int[] rgb, int hotx, int hoty, String name) { try { Toolkit tk = Toolkit.getDefaultToolkit(); Dimension d = tk.getBestCursorSize(width, height); if (d.width <= 0 || d.height <= 0) { System.err.println("Notice: System does not support custom cursors. Returning generic cursor."); return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); } if (d.width < width || d.height < height) { d = tk.getBestCursorSize(width * 2, height * 2); if (d.width < width || d.height < height) { System.err.println( "Notice: Tool requested a cursor larger than possible on this system. Returning generic cursor."); return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); } } BufferedImage img2 = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_ARGB); img2.setRGB(0, 0, width, height, rgb, 0, width); return tk.createCustomCursor(img2, new Point(hotx, hoty), name); } catch (Exception e) { e.printStackTrace(); return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); } } public static Cursor makeCursor(BufferedImage img, int hotx, int hoty, String name) { try { Toolkit tk = Toolkit.getDefaultToolkit(); Dimension d = tk.getBestCursorSize(img.getWidth(), img.getHeight()); if (d.width <= 0 || d.height <= 0) { System.err.println("Notice: System does not support custom cursors. Returning generic cursor."); return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); } if (d.width < img.getWidth() || d.height < img.getHeight()) { d = tk.getBestCursorSize(img.getWidth() * 2, img.getHeight() * 2); if (d.width < img.getWidth() || d.height < img.getHeight()) { System.err.println( "Notice: Tool requested a cursor larger than possible on this system. Returning generic cursor."); return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); } } BufferedImage img2 = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = img2.createGraphics(); g2.drawImage(img, null, 0, 0); g2.dispose(); return tk.createCustomCursor(img2, new Point(hotx, hoty), name); } catch (Exception e) { e.printStackTrace(); return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR); } } }