The only places you need to write code are in computeResults() and drawBars(). All of the rest of the code is fine as-is.
If you click on the JFrame, a new set of results will be computed and a new historgram will be displayed.
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; public class Histogram extends JFrame implements MouseListener { private int NUM_DICE = 4; private int MIN_ROLL = NUM_DICE; private int NUM_SIDES = 6; private int MAX_ROLL = NUM_DICE * NUM_SIDES; // Use this array to store the number of times each result is produced. // I.e., results[19] will contain the number of times the sum // of the dice was 19. private int[] results; public Histogram () { init(); } public void init() { setSize(650,700); setBackground(Color.WHITE); setTitle("AWSUM!@(!*(*@(@#??@1! Histogram Thing"); addMouseListener(this); computeResults(); repaint(); } // Roll four dice 1000 times, keeping track of the results. // The number of times each result is produced will be presented // visually in drawBars(). public void computeResults() { Die[] die = new Die[NUM_DICE]; // Create array of Die references results = new int[MAX_ROLL+1]; // Don't use results[0..3] final int TRIALS = 1000; // #times to roll four dice // Actually create the dice to go in the array // Remember: An object is only created if new with parentheses // is used. New with square brackets creates an array, but // not any individual objects that go in the array. for (int i = 0; i < die.length; i++) { die[i] = new Die(NUM_SIDES); } // Keep rolling dice and keep track of how many time // a result is generated in the array. Use the sum of // the dice as the index. // // Example: If the sum of the four dice is 17, then add // one to the 17th element of the array for (int i = 0; i < TRIALS; i++) { // YOUR CODE HERE } } public void paint(Graphics g) { int yAxisXPos = 50; int xAxisYPos = getHeight() - 50; clearDisplay(g); g.setColor(Color.BLACK); drawAxes(g, yAxisXPos, xAxisYPos); drawNums(g, yAxisXPos, xAxisYPos); g.setColor(Color.BLUE); drawBars(g, yAxisXPos, xAxisYPos); } public void clearDisplay(Graphics g) { Color c = g.getColor(); g.setColor(Color.WHITE); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(c); } public void drawAxes(Graphics g, int xPos, int yPos) { g.drawLine(xPos, yPos, xPos, 0); g.drawLine(xPos, yPos, getWidth(), yPos); } public void drawNums(Graphics g, int xPos, int yPos) { g.setFont(new Font("Courier", Font.ITALIC, 12)); for (int i = MIN_ROLL; i < results.length; i++) { if (i < 10) { g.drawString("" + i, xPos + 24 * (i-MIN_ROLL) + 13, yPos + 12); } else { g.drawString("" + i, xPos + 24 * (i-MIN_ROLL) + 10, yPos + 12); } } } // Draw bars for each outcome total. public void drawBars(Graphics g, int xPos, int yPos) { // YOUR CODE HERE } public void mouseClicked(MouseEvent arg0) { computeResults(); repaint(); } public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } }