public CubeCalculator() {
		super(); // Call the default constructor of the JPanel class

		this.setLayout(new GridLayout(2, 1)); // Set the layout of the CubeCalculator to a 2 row x 1 column grid

		this.numLabel = new JLabel("0", JLabel.RIGHT); // Instantiate the JLabel for the number to 0 and align it with the right of its parent component
		JScrollPane labelScroll = new JScrollPane(this.numLabel); // Add the JLabel to a JScrollPane so that a scrollbar will be added it the number becomes to big to fit in the JScrollPane's parent component

		this.add(labelScroll); // Add the JScrollPane containing the number label to the CubeCalculator using the inherited add method

		JPanel buttonPanel = new JPanel(); // Create a new JPanel for the buttons so that a different GridLayout can be used to order the buttons
		buttonPanel.setLayout(new GridLayout(4, 3)); // Set the layout of the JPanel that will contain the buttons to a 4 row x 3 column grid

		String[] buttonLabels = {"7", "8", "9", "4", "5", "6", "1", "2", "3", "Clear", "0", "Cube"}; // Create an array of strings containing the labels of the buttons

		/*
		 * The layout of the buttons will be (approximately):
		 *   7   8   9
		 *   4   5   6
		 *   1   2   3
		 * Clear 0 Cube
		 */

		for (String label : buttonLabels) { // Loop through each label in the array of labels because only the label changes from one button to the next
			JButton button = new JButton(label); // Create a new JButton with the current label
			button.addActionListener(new BHandler()); // Add a new ActionListner to the button

			buttonPanel.add(button); // Add the button to the JPanel containing the buttons
		}

		this.add(buttonPanel); // Add the JPanel to the CubeCalculator, filling in the seconds space in the GridLayout
	}