2011-12-28 23 views
0

可能性の重複:
Need to create cursor with watermark image半透明のカーソル

誰かが私はスイングでカスタム半透明のカーソルを作成するのに役立つことはできますか?私はこのカーソルにいくつかのイメージを設定する必要があります。たとえば、パネル上にテキストが重なっている場合、このテキストをカーソルの下に表示する必要があります。

+3

私たちの多くは覚えているhttp://stackoverflow.com/questions/8645431/need-to-create-cursor-with-watermark-image – mKorbel

+0

これは正しい質問ではありませんでしたが、今私はもっと正確に尋ねました –

答えて

1

これは

public Cursor pointer() throws Exception { 

     int[] pixels = new int[16 * 16]; 

     Image image = Toolkit.getDefaultToolkit().createImage(
       new MemoryImageSource(16, 16, pixels, 0, 16)); 

     Cursor transparentCursor = Toolkit.getDefaultToolkit().createCustomCursor(
         image, new Point(0, 0), "transparentCursor"); 
     return transparentCursor; 
} 
+0

ありがとう答えが、これはまさに私が意味するものではありません、私はガラスのようなイメージをすることができますか? –

+0

あなたのコードの一部をここに掲載する方が良いでしょう。 – Gokul

+0

私はいくつかの特別なコードを持っていない、私はパネル上にパネルを持っている私はいくつかのテキストのボタンを持って、私は私のカスタムカーソルがボタンの上に移動する必要がある私はカーソルと絵の下のテキストそれはガラスや透かしのようにすべきです)。スイングを使ってそれをすることはできますか? –

4

は、カーソルの半透明の画像を使用して、あなたの問題を解決する可能性があります。 AFAIU部分的な透明性をサポートするJ2SEで理解されている唯一のイメージタイプはPNGです。


メタルもデフォルトの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); 
      } 
     }); 
    } 
} 

アップショットは - 私は間違っていました。半透明のアイコンを使用すると、ではなく、の目標を達成できます。

+0

コードの一部を表示するといいでしょう –

+3

文頭に大文字を入れてみるといいでしょう。最高のコードを[SSCCE](http://sscce.org/)、リンク半透明の16x16アイコン(または少なくとも16x16のアイコン)に... –

+0

興味深い... Javaが透過カーソルを作成したことに賭けているだろう - そして、失われたでしょう:-) sscceに感謝します! – kleopatra

関連する問題