半透明光标

And*_*hka 1 java swing

可能的重复:
需要创建带有水印图像的光标

有人可以帮我在 swing 中创建自定义半透明光标吗?我需要为此光标设置一些图像,例如,如果我在面板上重叠某些文本,我需要在光标下看到该文本。

And*_*son 5

使用半透明图像作为光标。AFAIU 是 J2SE 理解的唯一支持部分透明的图像类型 - 是 PNG。


根据我的理解,Metal 和默认的 Windows PLAF 似乎都不支持部分透明。

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.io.File;
import java.net.URL;

/** The example demonstrates how a semi-transparent image is
NOT supported as a cursor image.  It is drawn as a solid color. */
class SemiTransparentCursor {

    public static void main(String[] args) {
        final BufferedImage biPartial = new BufferedImage(
            32,
            32,
            BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = biPartial.createGraphics();
        g.setColor(new Color(255,0,0,63));
        int[] x = {0,32,0};
        int[] y = {0,0,32};
        g.fillPolygon(x,y,3);
        g.dispose();

        final Cursor watermarkCursor = Toolkit.getDefaultToolkit().
            createCustomCursor(
                biPartial,
                new Point(0, 0),
                "watermarkCursor");
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JOptionPane.showMessageDialog(
                    null,
                    new ImageIcon(biPartial));

                JEditorPane jep = new JEditorPane();
                jep.setPreferredSize(new Dimension(400,400));
                jep.setCursor(watermarkCursor);
                try {
                    URL source = new File("SemiTransparentCursor.java").
                        toURI().toURL();
                    jep.setPage(source);
                } catch(Exception e) {
                    e.printStackTrace();
                }

                JOptionPane.showMessageDialog(
                    null,
                    jep);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是——我错了。使用半透明的图标并不能达到目的。

  • 正如在句子开头看到大写字母会很高兴一样,您最好的代码尝试是 [SSCCE](http://sscce.org/),一个指向半透明 16x16 图标(或至少一个16x16 图标).. (4认同)