2013-01-23 20 views
2

我正在嘗試做一個棋盤,但我似乎無法弄清楚在哪裏把我的代碼添加到按鈕的典當圖標。事實上,我不確定它是否正確使用代碼或者它是否在錯誤的地方。不確定將圖標添加到JAVA中的JButton

我的代碼看起來像這樣至今:

package gui; 

import java.awt.Color; 

import javax.swing.ImageIcon; 
import javax.swing.JButton; 

public class Square extends JButton implements Config { 

    public Square(int n) { 
     new ImageIcon("pawn.png"); 
     setBackground(calcColor(n)); 
    } 

    Color calcColor(int n) { 
     boolean everysecondSquare = (n % 2==0); 
     boolean everysecondRow = ((n/ROWS) % 2 == 0); 
     return (everysecondSquare != everysecondRow?P1Color:P2Color); 
    } 

    public ChessBoard ChessBoard; 
} 

我敢肯定它會工作添加圖標相同的地方,在你定義了正方形的背景顏色,但appearently它沒有工作。很顯然,我對Java編碼非常陌生。

我真的搞砸了嗎?所有反饋都深表感謝。如果需要更多關於代碼的信息,請告訴我,我會盡快添加它。

回答

2

您可以將具有構造函數的Icon對象傳遞給Button或使用按鈕的setIcon方法。

JButton b = new Button(myIconObject) 

myButtonObject.setIcon(myIconObject) 

看看這裏的文檔: http://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html

編輯:

在你的情況,你可以編輯該構造函數的第一行

public Square(int n) { 
    setIcon(new ImageIcon("pawn.png")); 
    setBackground(calcColor(n)); 
} 

這意味着每個創建的方塊都會有一個典當圖標。你最好將它從構造函數中移出來,然後做類似

Square s = new Square(n); 
/* And then somewhere more appropriate ...*/ 
s.setIcon(new ImageIcon("pawn")); 
1

試試這個。您需要實際設置按鈕的圖標。

public Square(int n) { 
setIcon(new ImageIcon("pawn.png")); 
setBackground(calcColor(n)); 
} 
+0

謝謝加文!這整理出來:) – Xantrax