Java 怎么生成光标

2019年8月19日22:33:42Java 怎么生成光标已关闭评论 447 2132字阅读7分6秒

1.简介

Java 怎么生成光标?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */

 

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);
        }
    }
}

 
继续阅读
编程十万个怎么办