我的GUI不能用于我的tic tac toe游戏...我想知道我做错了什么/出了什么问题以及为什么这不应该按照应该的方式工作?游戏应该有9个盒子和tic tac toe游戏,然后能够点击盒子来获得X和O,直到有人获胜。
这就是我现在的问题。如问题中所述,GUI不起作用。它要求玩家姓名和你想要的字母,X或O.就是这样。我想知道为什么带有九个盒子的GUI没有显示出来。
这是我的代码:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//Tic Tac Toe
@SuppressWarnings("serial")
public class TicTacToeSwing extends JFrame implements ActionListener {
//JButtons
//private JButton button1 = new JButton("");
private JButton jbtnTicTacToe1;
private JButton jbtnTicTacToe2;
private JButton jbtnTicTacToe3;
private JButton jbtnTicTacToe4;
private JButton jbtnTicTacToe5;
private JButton jbtnTicTacToe6;
private JButton jbtnTicTacToe7;
private JButton jbtnTicTacToe8;
private JButton jbtnTicTacToe9;
private JButton jbtnExit = new JButton("Exit");
private JButton jbtnReset = new JButton("Reset");
//JFrame window = new JFrame("Tic-Tac-Toe Swing ");
private JFrame window = new JFrame("Tic-Tac-Toe");
//labels
JLabel lblTitle = new JLabel("Tic-Tac-Toe!");
private JLabel jlblPlayerX = new JLabel ("X");
private JLabel jlblPlayerO = new JLabel ("O");
//text fields
JTextArea txtMessage = new JTextArea();
JTextField jtfName = new JTextField(20);
private JTextField jtfPlayerX = new JTextField("X");
private JTextField jtfPlayerO = new JTextField("O");
//Panels
JPanel jpnlMain = new JPanel ();
JPanel jpnlFamily = new JPanel();
JPanel jpnlNorth = new JPanel();
JPanel jpnlSouth = new JPanel();
JPanel jpnlCenter = new JPanel();
JPanel jpnlTop = new JPanel();
JPanel jpnlBottom = new JPanel();
//Class Constructor
public TicTacToeSwing () {
//Prepare JFrame/Window
super ("Tic Tac Toe");
setSize(400,400);
setTitle("Tic Tac Toe Swing");
setDefaultCloseOperation(JF3rame.EXIT_ON_CLOSE);
String n1 = JOptionPane.showInputDialog("Enter Player X name");
String n2 = JOptionPane.showInputDialog("Enter Player O name");
String input = JOptionPane.showInputDialog("Please select player X or player O: \n1) X\n2) O"); }
private int Player1;
private int Player2;
//Calculate Who's turn is it
public void actionPerformed1(ActionEvent a) {
int count = 0;
if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9){
int letter = Player1;
}
else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10){
int letter = Player2;
}
//Set the layouts for 3 rows and 3 columns
jpnlMain.setLayout(new BorderLayout(3,3));
jpnlCenter.setLayout(new GridLayout());
jpnlSouth.setLayout(new GridLayout());
jpnlTop.setLayout(new BorderLayout());
jpnlBottom.setLayout(new BorderLayout());
//Center Panel
jpnlCenter.add(jlblPlayerX);
jpnlCenter.add(jlblPlayerO);
//identify each JButton
jbtnReset.setActionCommand("Reset");
jbtnExit.setActionCommand("Exit");
//register JButton for event handling by using the THIS keyword - THIS class will handle the events
jbtnReset.addActionListener(this);
jbtnExit.addActionListener(this);
/*Add Buttons To The Window*/
window.add(jbtnTicTacToe1);
window.add(jbtnTicTacToe2);
window.add(jbtnTicTacToe3);
window.add(jbtnTicTacToe4);
window.add(jbtnTicTacToe5);
window.add(jbtnTicTacToe6);
window.add(jbtnTicTacToe7);
window.add(jbtnTicTacToe8);
window.add(jbtnTicTacToe9);
/*Add The Action Listener To The Buttons
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
*/
jbtnTicTacToe1.addActionListener(this);
jbtnTicTacToe2.addActionListener(this);
jbtnTicTacToe3.addActionListener(this);
jbtnTicTacToe4.addActionListener(this);
jbtnTicTacToe5.addActionListener(this);
jbtnTicTacToe6.addActionListener(this);
jbtnTicTacToe7.addActionListener(this);
jbtnTicTacToe8.addActionListener(this);
jbtnTicTacToe9.addActionListener(this);
//South Button Panel
jpnlSouth.add(jbtnReset);
jpnlSouth.add(jbtnExit);
/* Instantiate JButtons, put into a method for efficiency
jbtn1 = instantiateJButton("1", Color.PINK);
jbtn2 = instantiateJButton("2", Color.PINK);
jbtn3 = instantiateJButton("3", Color.PINK);
jbtn4 = instantiateJButton("4", Color.PINK);
jbtn5 = instantiateJButton("5", Color.PINK);
jbtn6 = instantiateJButton("6", Color.PINK);
jbtn7 = instantiateJButton("7", Color.PINK);
jbtn8 = instantiateJButton("8", Color.PINK);
jbtn9 = instantiateJButton("9", Color.PINK);
*/
//Finalize screen layout and publish to the display
jpnlMain.add(jpnlCenter, BorderLayout.NORTH);
jpnlMain.add(jpnlSouth, BorderLayout.CENTER);
//Prepare the container
Container ca = getContentPane();
ca.setBackground (Color.LIGHT_GRAY);
ca.add(jpnlMain);
setContentPane (ca);
setVisible(true);
//end constructor
}
//CLASS EVENT HANDLER
public void actionPerformed(java.awt.event.ActionEvent e)
{
//find out which JButton was pressed by using the Action Command
String sActionCommand = e.getActionCommand();
//EXIT JButton
if (sActionCommand.equals("Exit"))
{
System.exit(0);
}
//RESET JButton
else if (sActionCommand == "Reset")
{
jtfPlayerX.setText("");
jtfPlayerO.setText("");
}
} //end ACTIONPERFORMED (java.awt.event.ActionEvent e)
/**
* @param args
*/
public static void main(String[] args) {
//EXECUTION STARTING POINT
//TicTacToeSwing TicTacToeSwing = new TicTacToeSwing();
//TicTacToeSwing TicTacToeObject = new TicTacToeSwing();
new TicTacToeSwing();
}//end main(String[] args)
}//end TicTacToeSwing class
答案 0 :(得分:2)
你有两个JFrame,类本身和窗口变量。一个JFrame窗口获取所有按钮,另一个显示。我建议您没有扩展JFrame类,而是显示JFrame窗口。