[Java]JButton按鈕透明背景

要做swing套件的JButton透明背景有幾種方式,像是利用html-tag的background背景來設定、或是使用JLabel來e承載Image然後add至JButton裡等,不過使用JLabel的方式需要做些技巧才會有透明背景的效果出來。

使用html-tag的方式需要實際存在硬碟裡的圖檔,所以需要在使用前先Resize一份存到硬碟裡,而JLabel的方式則可直接Resize存在記憶體使用,使用的時機及優缺點都需要考量。

如果只是想單純在JButton裡加入圖片,那直接使用function setIcon會比較方便。

註:以下所有範例圖,均只有一個按鈕,會分成外框及內框,圖片需使用支援透明背景及去好背的圖,如png或gif。

下圖是setText使用html-tag設定body的background,會自動延展背景,所以如果只想出現一張背景圖時,圖的長寛與按鈕就需要控制好。能控制的範圍為內框裡,外框部份就不會延展背景圖了。

HtmlButton1.png

底下這張圖是調整好長寬的圖

HtmlButton2.png

package yku;
import java.awt.Frame;
import javax.swing.JButton;
import java.awt.BorderLayout;
public class HtmlBackground extends Frame {
private static final long serialVersionUID = 1L;
private JButton jButton = null;
/**
* This is the default constructor
*/
public HtmlBackground() {
super();
initialize();
}
/**
* This method initializes this
* 
* @return void
*/
private void initialize() {
this.setSize(500, 600);
this.setTitle("Html背景");
this.add(getJButton(), BorderLayout.CENTER);
}
/**
* This method initializes jButton
* 
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
yku.tool.Image tool = new yku.tool.Image("/han.png");
System.out.println(tool.getImagePath());
jButton = new JButton(
"<html><body background='"
+ tool.getImagePath()
+ "'><table >" +
"<tr valign='middle' >" +
"<td align='center' height='194' width='259'>" +
"<font style='color:red'>背景是圖喔</font>" +
"</td>" +
"</tr>" +
"</table>" +
"</body>" +
"</html>");
}
return jButton;
}
public static void main(String args[]) {
(new HtmlBackground()).setVisible(true);
}
}

發表迴響