Я занимаюсь настольной игрой tic tac toe. У меня уже есть панель в окне, но я не знаю, как использовать метод обработчика для установки значений в кнопках, чтобы игроки могли действительно играть. Это то, что я до сих пор:Как установить свой код, чтобы он позволял использовать значения «X» и «O» в кнопках?
import javax.swing.*;
import java.awt.*;
public class TicTacToeGame implements java.awt.event.ActionListener {
private NscWindow win;
private JButton[][] button;
private boolean turnX;
private JLabel label;
public TicTacToeGame() {
win = new NscWindow(10,10, 235, 280);
win.setTitle("Tic-Tac-Toe");
javax.swing.JButton btn;
button = new JButton[3][3];
JButton[] buttons = new JButton[9];
for (int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
button[i][j] = new JButton();
button[i][j].setSize(50, 50);
button[i][j].setLocation(30 + i*55, 30+ j*55);
win.add(button[i][j]);
button[i][j].addActionListener(this);
win.repaint();
javax.swing.JLabel label;
label = new JLabel("X's turn", JLabel.CENTER);
label.setSize(160, 20);
label.setLocation(30, 200);
win.add(label);
win.repaint();
}
}
}
//Abstract method
public void actionPerformed(java.awt.event.ActionEvent e) {
javax.swing.JButton button;
button = (javax.swing.JButton)e.getSource();
button.setText("");
//count++;
// if(count %2 != 0) {
//letter = "X";
//}else{
//letter = "O";
//}
}
public static void main(String[] args) {
new TicTacToeGame();
}
}
Вы уже вызываете 'button.setText (" ")', поэтому, по-видимому, вы понимаете, что делает этот метод - так почему бы не сделать очевидное - вызовите метод после установки ссылки на букву, а затем передайте переменную букв в этот метод? Я немного ошеломлен тем, почему вы еще не пробовали это. –
Если я поставил «X» там, он всегда будет помещать «X» в каждую кнопку. Я не знаю, понимаете ли вы мой вопрос. Предполагается, что он будет воспроизводиться. – user5183901
Нет, я не сказал, чтобы поставить «Х» там, я сказал для тебя, но переменную букв там ** после ** ты ее установил. Раскомментируйте код в нижней части обработчика actionPerformed методом, а затем вызовите 'button.setText (letter)' ниже, где вы задаете значение буквы. Опять же, почему это не будет работать? Я не думаю, что вы понимаете мое предложение. Еще лучше, используйте структуру Model-View-Control, чтобы вы установили текст кнопок в зависимости от состояния вашей модели. Это один из способов гарантировать, что кнопка не изменится, если она уже установлена. –