我目前的工作產生井字棋的一個簡單的JFrame/JButton的佈局的Java類。實現ActionListener時,我打算讓選定的JButton將它的標題設置爲「X」或「O」(基於一個布爾語句來判斷它是否輪到X選擇一個JButton)並被禁用(所以它不能在在接下來的回合中)。我創建的當前應用程序執行此操作,但它有時不會更改JButton文本或禁用按鈕,直到我單擊另一個按鈕。當我點擊其中一個JButton時,似乎沒有任何一種粘合順序。我花了幾個小時試圖解決這個問題沒有用。我是如何編寫我的actionPerformed方法或如何將它添加到我的JButton中的問題?的ActionListener:禁用按鈕
下面是代碼我的課:
import javax.swing.*;
import java.awt.event.*;
import javax.swing.*;
public class TTT extends JFrame implements ActionListener{
// private fields
private JButton[] buttonArray;
private JLabel prompt;
private boolean turnX;
private String letter;
public TTT() {
// Instantiates JFrame window and adds lines to board
super.setSize(235, 280);
super.setTitle("Tic-Tac-Toe");
// Instantiates JButton array
buttonArray = new JButton[9];
// Loop that creates the JButton squares
for(int y = 30; y <= 140; y += 55) {
for(int x = 30; x <= 140; x += 55) {
for(int index = 0; index < buttonArray.length; index++) {
buttonArray[index] = new JButton();
buttonArray[index].setSize(50, 50);
buttonArray[index].setLocation(x, y);
buttonArray[index].addActionListener(this);
super.add(buttonArray[index]);
}
}
}
prompt = new javax.swing.JLabel("X's TURN");
prompt.setVerticalAlignment(JLabel.BOTTOM);
super.add(prompt);
turnX = true;
super.setVisible(true);
}
public void actionPerformed(java.awt.event.ActionEvent a) {
// Calculate whose turn it is
if(turnX){
letter = "X";
prompt.setText("O's TURN");
turnX = false;
} else if(!turnX){
letter = "O";
prompt.setText("X's TURN");
turnX = true;
}
JButton pressedButton = (JButton)a.getSource();
pressedButton.setText(letter);
pressedButton.setEnabled(false);
super.repaint();
}
public static void main(String[] args) {
new TTT();
}
}
太謝謝你了!當我讀到我正在給JFrame添加82個按鈕時,我就吼了一聲...... – Saffioti