2012-02-09 22 views
1

デフォルトのJButtonのアイコンに使用しているこの小さなフラグがあります。しかし、ロードすると、その周りにある白いボックスがJButtonの青い背景に表示されます(少なくとも私の色です)。私はこの白い色をどのように取り除くのかと思っていました。JButtonから白を削除する方法アイコン

Tiny Flag

+4

「トランスペアレント」アイコンを作成する必要があります。 – eternaln00b

+0

@SiddharthaShankar答えとして投稿する必要があります。 –

+0

@AndrewThompson夜遅く、私は怠け者でした。 :)包括的な答えを投稿してくれてありがとう。 *いいぞ* – eternaln00b

答えて

4

ため、シッダールタシャンカールは正しい答えを提供し、mKorbelが良い(水平思考)を提案代わりに、私は単に「私たちは技術を持っている」ため、これを投稿することを強いられました。 ;)

TransparentIcon

import java.awt.image.BufferedImage; 
import java.awt.*; 
import javax.swing.*; 

import java.net.URL; 
import javax.imageio.ImageIO; 

class TransparentIcon { 

    public static void main(String[] args) throws Exception { 
     URL url = new URL("http://i.stack.imgur.com/DD7gI.gif"); 
     final BufferedImage bi = ImageIO.read(url); 

     final BufferedImage tr = new BufferedImage(
      bi.getWidth(), 
      bi.getHeight(), 
      BufferedImage.TYPE_INT_ARGB); 

     Color cTrans = new Color(255,255,255,0); 

     for (int x=0; x<bi.getWidth(); x++) { 
      for (int y=0; y<bi.getHeight(); y++) { 
       Color c = new Color(bi.getRGB(x,y)); 
       Color cNew = (c.equals(Color.WHITE) ? cTrans : c); 
       tr.setRGB(x,y,cNew.getRGB()); 
      } 
     } 

     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       JPanel p = new JPanel(new GridLayout(1,0,5,5)); 
       p.add(new JButton(new ImageIcon(bi))); 
       p.add(new JButton(new ImageIcon(tr))); 

       JOptionPane.showMessageDialog(null, p); 
      } 
     }); 
    } 
} 

ところで - あなたはこれらのペテンから形成された画像を使用して、ImageIO.write()を使用することによりシッダールタのそれとの私の提案を組み合わせることができます。

関連する問題