Question
/* Practice using layouts Anderson, Franceschi */ import javax.swing.*; import java.awt.*; import java.awt.event.*; public class NestedLayoutPractice extends JFrame { private Container contents; private Game game;
/* Practice using layouts Anderson, Franceschi */
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class NestedLayoutPractice extends JFrame { private Container contents; private Game game;
private BorderLayout bl;
private JLabel bottom;
// ***** Task 1: declare a JPanel named top // also declare three JButton instance variables // that will be added to the JPanel top // these buttons will determine the grid size of the game: // 3-by-3, 4-by-4, or 5-by-5 // Part 1 student code starts here: private JPanel top; JButton three; JButton four; JButton five;
// Part 1 student code ends here.
public NestedLayoutPractice() { super("Practicing layout managers"); contents = getContentPane();
// ***** Task 2: // instantiate the BorderLayout manager bl // Part 2 student code starts here:
// set the layout manager of the content pane contents to bl:
top.setLayout(bl);
game = new Game(3); // instantiating the GamePanel object
// add panel (game) to the center of the content pane
contents.add(game, BorderLayout.CENTER);
// Part 2 student code ends here.
bottom = new JLabel("Have fun playing this Tile Puzzle game", SwingConstants.CENTER);
// ***** Task 3: // instantiate the JPanel component named top // Part 3 student code starts here:
// set the layout of top to a 1-by-3 grid
JPanel top = new JPanel( new GridLayout());
// instantiate the JButtons that determine the grid size
three = new JButton ("3-by-3"); four = new JButton ("4-by-4"); five = new JButton ("5-by-5");
// add the buttons to JPanel top
top.add(three); top.add(four); top.add(five); // add JPanel top to the content pane as its north component
contents.add(top, BorderLayout.NORTH);
// Part 3 student code ends here.
// ***** Task 5: // Note: search for and complete Task 4 before performing this task // Part 5 student code starts here:
// declare and instantiate an ActionListener
ButtonHandler bh = new ButtonHandler( );
// register the listener on the 3 buttons // that you declared in Task 1
three.addActionListener(bh); four.addActionListener(bh); five.addActionListener(bh);
// Part 5 student code ends here.
contents.add(bottom, BorderLayout.SOUTH);
setSize(325, 325); setVisible(true); }
// ***** Task 4: // create a private inner class that implements ActionListener // your method should identify which of the 3 buttons // was the source of the event // depending on which button was pressed, // call the setUpGame method of the Game class // with arguments 3, 4, or 5 // the API of that method is: // public void setUpGame(int nSides) // At the end of the method call validate() // Part 4 student code starts here:
private class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == three) { game.setUpGame( 3 ); validate(); } else if (source == four) { game.setUpGame( 4 ); validate(); } else if (source == five) { game.setUpGame( 5 ); validate(); } } } // Part 4 student code ends here.
public static void main(String[] args) { NestedLayoutPractice nl = new NestedLayoutPractice(); nl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
I am drawing a blank on the last portion of Task 4. I know I need to call the function setUpGame() but I just cannot remember how to do it (if I even set up the rest correctly). What am I doing wrong?
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started