所以情況是,我正在做一個面板充滿8 * 8按鈕,就像一個矩陣,我將不得不改變具體的按鈕文本取決於位置的點擊按鈕。這似乎是一個好主意,讓我自己的JButton,我可以分配X和Y索引的按鈕,所以我可以輕鬆檢查按鈕被索引點擊。 下面是該代碼:擴展JButton不會出現,直到鼠標在
import javax.swing.JButton;
public class MatrixButton extends JButton {
private int x;
private int y;
public MatrixButton(int x, int y, String text){
super(text);
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
而且它確實解決了任務,但這些矩陣按鍵不希望出現,直到我的鼠標超過他們。可能是什麼問題呢?
這裏是面板至極的代碼包含這些按鈕和處理他們的行動:
public class PlayField extends JPanel implements ActionListener {
private MatrixButton[][] button = new MatrixButton[8][8];
public PlayField(){
Random rand = new Random();
setLayout(new GridLayout(8, 8));
for (int i = 0; i < 8; ++i){
for (int j = 0; j < 8; ++j){
button[i][j] = new MatrixButton(j, i, "" + rand.nextInt(80));
button[i][j].addActionListener(this);
add(button[i][j]);
}
}
}
private String incrementText(MatrixButton mb){
return "" + (Integer.parseInt(mb.getText()) + 1);
}
@Override
public void actionPerformed(ActionEvent e){
MatrixButton mb = (MatrixButton)e.getSource();
for (int i = mb.getY(); i >= 0; --i){
button[i][mb.getX()].setText(incrementText(button[i][mb.getX()]));
}
for (int i = 0; i < 8; ++i){
if (i != mb.getX())
button[mb.getY()][i].setText(incrementText(button[mb.getY()][i]));
}
}
}
PS:如果我填補他們出現,因爲他們應該是普通Jbutton將。這就是爲什麼我很困惑,因爲我沒有在JButton擴展上做太多改變,只是增加了2個變量。
恩的感謝,它actualy覆蓋它,這聽起來不錯,謝謝你的提醒。我試圖把一個新的類作爲一個組合,但作爲一個組合,我只能將這個類的JButton組件添加到JPanel中,然後我無法再訪問這個類的索引。或者我錯了? – geri
@geri:檢查編輯。你可以使用適當的方法來獲取任何東西,比如getter方法。 –
感謝您的幫助。我真的很感謝它,主要問題是我重寫了getX和getY方法,我改變了方法名稱,在我的原始JButton擴展中出現。而這個代碼對於最終的解決方案來說是一個很大的幫助。謝謝:) – geri