我現在正在嘗試制作一個簡單的Tic Tac Toe游戲,我創建了一個帶有網格布局的 JFrame 并添加了 9 個按鈕。現在單擊其中一個按鈕時,我想將其圖示更改為十字或圓形,但單擊時它沒有做任何事情
@Override
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == this)
{
if (counter%2 == 0)
{
ImageIcon cross = new ImageIcon("Cross.png");
this.setIcon(cross);
}
if (counter%2 == 1)
{
ImageIcon circle = new ImageIcon("Circle.png");
this.setIcon(circle);
}
counter ;
}
}
專案結構在這里
該actionPerformed方法確實適用于一個簡單的System.out.println()陳述句
提前致謝!
uj5u.com熱心網友回復:
您必須了解 的含義e.getSource(),它回傳按鈕的所有屬性。您的條件e.getSource() == this回傳 false,這是一個問題。您必須設定影像圖示,如new javax.swing.ImageIcon(getClass().getResource("path/img_name")).
下面是通用代碼實作,因此邏輯將適用于九個按鈕中的任何一個:
public void jButton1ActionPerformed(ActionEvent e)
{
JButton button = (JButton)e.getSource();
if(counter % 2 == 0)
{
button.setIcon(new javax.swing.ImageIcon(getClass().getResource("Cross.png")));
}
else
{
button.setIcon(new javax.swing.ImageIcon(getClass().getResource("Circle.png")));
}
counter ;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429877.html
