Java Tic Tac Toe 游戏,Gui 不工作 [英] Java Tic Tac Toe Game, Gui not working

查看:31
本文介绍了Java Tic Tac Toe 游戏,Gui 不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 GUI 不适用于我的井字游戏...我想知道我做错了什么/出了什么问题,为什么这不能正常工作?游戏应该有九个盒子和井字游戏,然后能够点击盒子有 X 和 O 直到有人获胜.

My GUI is not working for my tic tac toe game...I would like to find out what i am doing wrong/what is going wrong and why this is not working the way it should? The game should have the nine boxes and for the tic tac toe game and then be able to click on the boxes to have X's and O's until someone wins.

这几乎是我现在的问题.如问题中所述,GUI 不起作用.它会询问玩家姓名以及您想成为哪个字母,X 或 O.仅此而已.我想知道为什么带有九个框的 GUI 没有出现.

that's pretty much my problem right now. As described in the question, the GUI doesn't work. It asks for player names and which letter you would like to be, X or O. And thats it. I am wondering why the GUI with the nine boxes don't show up.

这是我的代码:

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

推荐答案

您有两个 JFrame、类本身和窗口变量.一个 JFrame 窗口获取所有按钮,另一个显示.我建议你不要让你的类扩展 JFrame,而是显示窗口 JFrame.

You've got two JFrames, the class itself, and the window variable. One JFrame, window, gets all of the buttons, and the other gets displayed. I suggest that you don't have your class extend JFrame and instead display the window JFrame.

这篇关于Java Tic Tac Toe 游戏,Gui 不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆