2017-08-15 48 views
0

我有以下問題:的JPanel刪除顏色漸變

我有我自己的JPanel實例創建的ImageButton。 當我設置背景時,它會自動添加一個顏色漸變,這會導致透明圖像的背景不符合我的JFrame的顏色。

如何刪除此漸變?

public ImageButton(Runnable exec, boolean on) { 
     super(); 

     setBackground(new Color(238,238,238)); 
     setVisible(false); 
     switched_on = on; 
     setSize(new Dimension(64, 64)); 
     setPreferredSize(new Dimension(64, 64)); 
     if(on) { 
      img = ImageButton.on; 
     }else{ 
      img = ImageButton.off; 
     } 
} 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawImage(img, 0, 0, null); 
} 

截圖:ImageButton的

https://i.stack.imgur.com/hen6K.png

另一屏幕,在那裏你看到的梯度更好

https://i.stack.imgur.com/k8eFl.png

+1

1)爲了更好地提供幫助,請發佈[MCVE]或[簡短自包含正確示例](http://www.sscce.org/)。 2)獲取圖像的一種方法是通過[本問答](http://stackoverflow.com/q/19209650/418556)中的圖像進行熱鏈接。 3)'g.drawImage(img,0,0,null);'應該是'g.drawImage(img,0,0,this);' –

回答

0

我終於找到了問題。我試圖在我的源代碼中找到這個錯誤,但是圖像本身在左上角有一個發白的背景。

2

當我設置的背景下,它會自動添加一個顏色漸變,這會導致透明圖像具有一個不適合我的JFrame顏色的背景。

使面板透明:

setOpaque(false); 

現在無論是圖像和麪板將是透明的,所以背景色將是你ImagePanel的父組件的背景。

雖然更簡單的方法是隻使用JLabel。 A JLabel默認爲透明。然後,您可以使用setIcon(...)方法更改圖像。所以不需要自定義繪畫或自定義組件。