2012-02-09 6 views
1

기본 JButton의 아이콘에 사용하고있는이 작은 플래그가 있습니다. 하지만로드 할 때 JButton의 파란색 배경에 나타나는 흰색 상자가 유지됩니다 (적어도 저에게는 색상입니다). 나는이 하얀색을 어떻게 제거했는지 궁금했다.JButton에서 흰색을 제거하는 방법 Icon

Tiny Flag

+4

"투명한"아이콘을 만들어야합니다. – eternaln00b

+0

@SiddharthaShankar 답변으로 게시해야합니다. –

+0

@AndrewThompson 밤늦게 였고 나는 게으르다. :) 완전하고 포괄적 인 답변을 게시 주셔서 감사합니다. * 엄지 손가락 * – eternaln00b

답변

4

를 들어, 세트 myButton.setContentAreaFilled(false)에 의해 JButton에서 나머지를 제거하려면, 싯다르타 샨 카르는 정답을 제공하고, 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); 
      } 
     }); 
    } 
} 

BTW - 당신이이 헛소리에서 형성된 이미지를 사용하여, ImageIO.write()를 사용하여 싯다르타의 내 제안을 결합 할 수 있습니다.

관련 문제