Для игры TicTacToe, когда я запускаю ее на своем P C с затмением дома, она работает нормально. Но когда я пытаюсь запустить программу на другом компьютере, она просто отображает белое окно ни с чем. Игра должна отображать 9 кнопок, где при нажатии она меняет кнопку на «х» или «о». На другом компьютере окно выдвигается, но там только экран. Кто-нибудь знает решение проблемы?
изображения:
Изображение проблемы
Это должно быть :
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
public class TicTacToeGUI extends JFrame {
Container pane;
String currentPlayer;
JButton [] [] board;
boolean hasWinner;
JMenuBar menuBar;
JMenu menu;
JMenuItem quit;
JMenuItem newGame;
// Constructor
public TicTacToeGUI() {
super();
pane = getContentPane();
pane.setLayout(new GridLayout (3,3));;
setTitle("Tic Tac Toe Game");
setSize(500,500);
setResizable(false);
setVisible(true);
currentPlayer = "x";
board = new JButton [3][3];
hasWinner = false;
intializeBoard();
intializeMenuBar();
}
private void intializeMenuBar() {
menuBar = new JMenuBar ();
menu = new JMenu("File");
newGame = new JMenuItem("New Game");
newGame.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
TicTacToeGUI frame = new TicTacToeGUI();
frame.setVisible(true);
}
});
quit = new JMenuItem("Quit");
quit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(newGame);
menu.add(quit);
menuBar.add(menu);
setJMenuBar(menuBar);
}
private void intializeBoard() {
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
JButton btn = new JButton();
board[i][j] = btn;
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(((JButton)e.getSource ()).getText().equals("") && hasWinner == false) {
btn.setText(currentPlayer);
hasWinner();
togglePlayer();
}
}
});
pane.add(btn);
}
}
}
private void togglePlayer() {
if (currentPlayer.contentEquals("x")){
currentPlayer = "o";
}
else {
currentPlayer = "x";
}
}
private void hasWinner() {
for(int i = 0; i < 3; ++i) {
if(board[0][i].getText().equals(currentPlayer) && board[1][i].getText()
.equals(currentPlayer) && board[2][i].getText()
.equals(currentPlayer)) {
JOptionPane.showMessageDialog(null, "player " + currentPlayer + " has won");
hasWinner = true;
}
else if(board[i][0].getText().equals(currentPlayer) && board[i][1].getText()
.equals(currentPlayer) && board[i][2].getText()
.equals(currentPlayer)) {
JOptionPane.showMessageDialog(null, "player " + currentPlayer + " has won");
hasWinner = true;
}
}
if (board[0][0].getText().equals(currentPlayer) && board[1][1].getText()
.equals(currentPlayer) && board[2][2].getText()
.equals(currentPlayer) ||
(board[0][2].getText().equals(currentPlayer) && board[1][1].getText()
.equals(currentPlayer) && board[2][0].getText()
.equals(currentPlayer))) {
JOptionPane.showMessageDialog(null, "player " + currentPlayer + " has won");
hasWinner = true;
}
}
public static void main(final String[] args) {
new TicTacToeGUI();
}
}