Results 1 to 2 of 2
  1. #1
    Razorfc is offline Member
    Join Date
    Mar 2012
    Posts
    27
    Rep Power
    0

    Default Problems with putting buttons in the bottom

    Java Code:
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package test;
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    /**
     *
     * @author 000621812
     */
    public class NoughtsAndCrossesGamev2 {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            NoughtsAndCrossesGameFrame noughtsAndCrossesGame;
    
            noughtsAndCrossesGame = new NoughtsAndCrossesGameFrame();
            noughtsAndCrossesGame.setVisible(true);
    
    
        }
    }
    
    class NoughtsAndCrossesGameFrame extends JFrame {
    
        NoughtsAndCrossesGamePanel gamePanel;
        NoughtsAndCrossesButtonPanel buttonPanel;
        private ButtonPlayActionHandle playHandler;
        private ButtonExitActionHandler exitHandler;
        private JButton playButton;
        private JButton exitButton;
    
        public NoughtsAndCrossesGameFrame() {
    
            gamePanel = new NoughtsAndCrossesGamePanel();
            buttonPanel = new NoughtsAndCrossesButtonPanel();
    
    
            this.setLayout(new FlowLayout());
            //this.setLayout(new BorderLayout());
            
            this.setVisible(true);
    
    
            this.setTitle("Noughts and Crosses");
            this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    
            this.add(playButton );
            this.add(exitButton);
    
            this.add(gamePanel, FlowLayout.CENTER );
            this.add(buttonPanel);
            
         
    	 this.setSize(200, 200);
    	this.setVisible(false);
    
    
    
    
    
    
    
    
    
    
    
    
    
        }
    
        /**
         * Asks the panel containing the game to reset the game.
         */
        private void resetGame() {
            //**
    //* The button panel
            
    
    //*/
        }
    
        class NoughtsAndCrossesButtonPanel extends JPanel {
    
            /**
             * The game panel
             *
             */
            public NoughtsAndCrossesButtonPanel() {
                playButton = new JButton("Play");
                playHandler = new ButtonPlayActionHandle();
                playButton.addActionListener(playHandler);
    
                exitButton = new JButton("Exit");
                exitHandler = new ButtonExitActionHandler();
                exitButton.addActionListener(exitHandler);
    
    
    
    
    
    
    
            }
        }
    }
    
    class NoughtsAndCrossesGamePanel extends JPanel {
    
        private int clickCount = 0;
        private JButton[] btnKeypad = new JButton[9];
    
        public NoughtsAndCrossesGamePanel() {
            /**
             * Resets the buttons and clicjCount ready for a new game
             */
            HandlePlayerShot shotHandler = new HandlePlayerShot();
            // Set some JFrame details
    
    
    
    
            // NOTE - In grid layout you provide the number of
            // rows and columns but columns are ignored and always set equal to rows
            // unless the rows are zero.
            //TODO
    
            this.setLayout(new BorderLayout());
            this.setLayout(new GridLayout(3, 3));
    	 this.setSize(200, 200);
    	this.setVisible(true);
            
            
    
    
    
    
    
    
    
            // Create the buttons and add them  to the JFrame
            for (int i = 0; i < 9; i++) {
                btnKeypad[i] = new JButton(" ");
                this.add(btnKeypad[i]);
                btnKeypad[i].addActionListener(shotHandler);
    
    
                //TODO
            }
    
            // Register the same listener for each button as the action needed is always the same.
            // Note - this could have been done in the above loop but is shown separately here to make
            // it clearer.
            //shotHandler = new HandlePlayerShot();
    
    
    
            this.setSize(300, 300);
         
    
    
    
    
        }
    
        private void resetGame() {
            /**
             * Disables all the buttons when the game ends
             *
             */
           
            for (int i = 0; i < 9; i++) {
    
                btnKeypad[i].setEnabled(false);
            }
    
        }
    
        private void gameFinished() {
            /**
             * Inner class of NoughtsAndCrossesGamePanel to handle a players shot
             * ie when a game button is pressed.
             *
             */
            for (int i = 0; i < 9; i++) {
    
                btnKeypad[i].setEnabled(false);
            }
        }
    
        class HandlePlayerShot implements ActionListener { //TODO  implements ????
    
            /**
             * Inner class of NoughtsAndCrossesGameFrame to respond to the Exit Button being
             * pressed. Dispose of the frame and exits the application
             */
            @Override
            /**
             * Responds to the button press - ie player shot
             */
            public void actionPerformed(ActionEvent e) {
                JButton currentButton;
                String winner;
    
                clickCount++;
                currentButton = (JButton) (e.getSource());
                // If it is an odd click count (button press count) then it is "X"
                // shot as "X" player always goes first
                if (clickCount % 2 == 1) {
                    currentButton.setText("X");
                } else {
                    currentButton.setText("0");
                }
                currentButton.setEnabled(false);
                winner = checkForWinner();
                if (winner != null) {
                    //Display a message showing who the winner is
                    //TODO
                    JOptionPane.showMessageDialog(null, "The winner is " + winner);
    
                    //NoughtsAndCrossesGamePanel.this.dispose();
                } else {
                    // check that all possible shots have been had
                    if (clickCount == 9) {
                        //Display a message saying it is a drawn game
                        //TODO
                        JOptionPane.showMessageDialog(null, "Draw!");
    
                    }
                }
            }
    
            /**
             * Checks if the button in btnKeypad array in positions i, j, k
             * all have the same text.
             * @param i - button number
             * @param j - button number
             * @param k - button number
             * @return true if button i,j,k
             */
            private boolean isAWinner(int i, int j, int k) {
                return !btnKeypad[i].getText().equals(" ")
                        && btnKeypad[i].getText().equals(btnKeypad[j].getText())
                        && btnKeypad[i].getText().equals(btnKeypad[k].getText());
            }
    
            /**
             * Checks for all possible winning scenarios
             * @return null if there is no winner or the text on the button of the
             * winner
             */
            public String checkForWinner() {
                /* Assumed mapping of button indexes to position in game is -
                 * 	012
                 * 	345
                 * 	678
                 */
                int winner = -1; // -1 value means there was no winner
    
                if (isAWinner(0, 1, 2)) {// Horizontal row 1
                    winner = 0;
                } else if (isAWinner(3, 4, 5)) {	// Horizontal row 2
                    winner = 3;
                } else if (isAWinner(6, 7, 8)) {	// Horizontal row 3
                    winner = 6;
                } else if (isAWinner(0, 3, 6)) {	// Vertical row 1
                    winner = 0;
                } else if (isAWinner(1, 4, 7)) {	// Vertical row 2
                    winner = 1;
                } else if (isAWinner(2, 5, 8)) {	// Vertical row 3
                    winner = 2;
                } else if (isAWinner(0, 4, 8)) {	// Diagonal 1
                    winner = 0;
                } else if (isAWinner(2, 4, 6)) {	// Diagonal 2
                    winner = 2;
                }
    
                if (winner != -1) {
                    return btnKeypad[winner].getText();
                } else {
                    return null;
                }
            }
        }
    }
    
    class ButtonExitActionHandler implements ActionListener {
    
        /**
         * Inner class of NoughtsAndCrossesGameFrame to respond to the Play Button being
         * pressed. Asks the frame to reset the game by calling the frames resetGame
         * method
         */
        public void actionPerformed(ActionEvent e) {
            //NoughtsAndCrossesGamePanel.this.dispose();
            System.exit(0);
    
        }
    }
    
    class ButtonPlayActionHandle implements ActionListener {
    
        public void actionPerformed(ActionEvent e) {
            //resetGame();
        }
    }
    I was having trouble putting the buttons in the bottom and the play can't do in function
    Problems with putting buttons in the bottom-untitled.png

  2. #2
    DarrylBurke's Avatar
    DarrylBurke is offline Forum Police
    Join Date
    Sep 2008
    Location
    Madgaon, Goa, India
    Posts
    11,458
    Rep Power
    20

    Default Re: Problems with putting buttons in the bottom

    You already have a thread for this: Noughts And Crosses v2 problem with running

    I'm closing this one.

    db
    If you're forever cleaning cobwebs, it's time to get rid of the spiders.

Similar Threads

  1. Replies: 2
    Last Post: 08-11-2011, 06:02 PM
  2. Replies: 3
    Last Post: 07-04-2011, 01:50 PM
  3. Problems with empty arrays (Putting
    By JayP in forum New To Java
    Replies: 5
    Last Post: 06-03-2011, 06:10 AM
  4. Bottom-Up JTextPane
    By George R. in forum AWT / Swing
    Replies: 7
    Last Post: 10-15-2010, 07:33 AM
  5. Bottom-Up or Top-Down
    By 3xpr1ment in forum New To Java
    Replies: 5
    Last Post: 03-31-2010, 10:18 AM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •