2013-04-12 69 views
0

我知道我的方法並不實用,但這會幫助我更多地習慣Java。 我想創建一個JButton子類(名爲MyButton)。 MyButton基本上會創建一個帶有自定義圖像背景的新的Gui按鈕。 我知道如何在類中創建一個新按鈕,但不知道如何引用MyButton類創建的按鈕。如代碼所示,按鈕的圖標需要設置,但這需要在子類內完成,以便所使用的不必使用它。 創建時,編碼器輸入引用紋理的字符串,然後MyButton具有JButton的所有屬性,但也已設置其圖像。 以下是我的源代碼。Java中的自定義按鈕類

package Classes; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 

public class MyButton extends JButton{ 
private static final long serialVersionUID = 1L; 

public JButton abc = new JButton(); 
private ImageIcon def; 
private MyButton ghi; 

public MyButton(String image){ 

    def = new ImageIcon(getClass().getResource(image)); 

    //abc.setIcon(def); 
    //abc.setPressedIcon(def); 

    ghi = new MyButton("image.png"); 
    ghi.setIcon(def); 


} 
} 

UPADTE 解決它。感謝Sam。 「this.setIcon」的作品,我相信

+0

'this.setIcon()',而不是'ghi.setIcon()'。你已經有了一個MyButton,你不想創建另一個。 –

+0

你知道,我完全忘了「這個」。 – user2184376

+0

謝謝,就像你說的那樣,我正在處理代碼並想到它。傻我! – user2184376

回答

2

也許我誤解你,但MyButton不(或可能不應該)創建一個按鈕,它按鈕。 (從技術上講,這是一種按鈕。)方法public MyButton...MyButton類的構造方法;它初始化一個新的MyButton。 this關鍵字將引用MyButton類中的按鈕;它的外面,你會使用的代碼看起來是這樣的:

MyButton aButton = new MyButton(); 
0
public class MyButton extends JButton{ 
private static final long serialVersionUID = 1L; 
private ImageIcon def; 
private MyButton ghi; 

public MyButton(){ 
def = new ImageIcon("image.png"); 
super(def); 
} 
} 

沿着上面的類的東西。

0

如果你擴展JButton,那麼你有一個新的對象,這是一個按鈕。
最初的JButton有一個繪製方法,它將按鈕繪製到畫布上。

我想你應該重寫按鈕的的paintComponent()方法是這樣的:

@Override 
public void paintComponent(Graphics g) { 
    // g.drawImage(image) or something... 
} 

// Also has a paintBorder() method 
public void paintBorder(Graphics g) { 
    // Draw your border if mouse over 
} 

所以,你可以畫出你的initalised圖像文件。 該按鈕將像普通的JButton一樣工作,但構造函數將獲取圖像url。 (你已經這樣做了)。