Practice using layouts Anderson Franceschi import javaxswi
/* 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 final JPanel top;
 private JButton [] topButtones;
String [] topGridSize =
 {\"3-by-3\",
 \"4-by-4\",
 \"5-by-5\",
 };
private JButton reset;
 // 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:
 // bl = new BorderLayout (); (not suer if this is right)
 //set.BorderLayout(bl); (not suer if this is right)
game = new Game(3); // instantiating the GamePanel object
 // add panel (game) to the center of the content pane
// 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:
 //top = new JPanle ();(not suer if this is right)
 // set the layout of top to a 1-by-3 grid(not suer if this is right)
 // panel.setLayout (new GridLayout (3, 1));(not suer if this is right)
 // instantiate the JButtons that determine the grid size
 // topButtones [0] = new JButton (\"3-by-3 \"); (not suer if this is right)
// add the buttons to JPanel top
 //top.add (topButtones[0]);(not suer if this is right)
 //top.add (topButtones[1]);
 //top.add (topButtones[2]);
 // add JPanel top to the content pane as its north component
c.add(top, \"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
 //topButtones[0].addActionListnere(this);(not suer if this is right)
 //topButtones[1].addActionListnere(this);
 //topButtones[2].addActionListnere(this);
// register the listener on the 3 buttons
 // that you declared in Task 1
// 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:
 public void actionPreformed(ActionEvent ae)
 {
 if (ae.getActionCommand(). equals (\"3-by-3\"))
 game = new Game (3);
 else if(ae.getActionCommand(). equals (\"4-by-4\"))
 game = new game (3);
 else if(ae.getActionCommand(). equals (\"5-by-5\"))
 game = new game (3);
 }
 // Part 4 student code ends here.
public static void main(String[] args)
 {
 NestedLayoutPractice nl = new NestedLayoutPractice();
 nl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
 }
Solution
TilePuzzle Class
Game class



