can't get graph to resize with window (Java)--ANSWERED
<p>I'm building a program to graph the popularity of baby names since 1900.  I've gotten the graph part, but I can't get the graph to resize with the window.  I've added a component listener to a class extending GCanvas with the following code:</p>

<pre><code>import acm.graphics.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;

public class NameSurferGraph extends GCanvas
implements NameSurferConstants, ComponentListener {

private static final long serialVersionUID = 1L;

//Sets up the graph
public NameSurferGraph() {
    addComponentListener(this);
    nameList = new ArrayList&lt;NameSurferEntry&gt;();
}

//Adds an entry to the array of names being graphed
public void addEntry(NameSurferEntry entry) {
    nameList.add(entry);
}

//Clears and then redraws the graph
public void update() {
    removeAll();
    drawBackground();
    for (int i=0; i&lt;nameList.size(); i++) {
            drawLineForOneName(i);
    }
}

//Draws the background lines and labels for the graph
private void drawBackground() {
    String decade = "";
    for (int i = 0; i&lt;NDECADES; i++) {
        double x = (APPLICATION_WIDTH/NDECADES)*i;
        decade = new Integer(STARTING_DECADE+10*i).toString();
        GLine line = new GLine(x,0,x,APPLICATION_HEIGHT);
        GLine hLine = new GLine(0,GRAPH_MARGIN_SIZE,APPLICATION_WIDTH-APPLICATION_WIDTH/NDECADES,GRAPH_MARGIN_SIZE);
        GLine hLine2 = new GLine(0,APPLICATION_HEIGHT-GRAPH_MARGIN_SIZE,APPLICATION_WIDTH-APPLICATION_WIDTH/NDECADES,APPLICATION_HEIGHT-GRAPH_MARGIN_SIZE);
        GLabel label = new GLabel(decade);
        label.setLocation(x+4,APPLICATION_HEIGHT);
        add(line);
        add(hLine);
        add(hLine2);
        add(label);
        }
}

//More code draws the actual lines.

//ivars
private ArrayList&lt;NameSurferEntry&gt; nameList;
private GLine line;

//Implementation of the ComponentListener interface
public void componentHidden(ComponentEvent e) { }
public void componentMoved(ComponentEvent e) { }
public void componentResized(ComponentEvent e) { update(); }
public void componentShown(ComponentEvent e) { }
}
}
}
</code></pre>

<p>But when I call a method on it from another class, nothing happens.</p>

<pre><code>import acm.program.*;
import java.awt.event.*;
import javax.swing.*;

public class NameSurfer extends Program implements NameSurferConstants {

private static final long serialVersionUID = 1L;

private NameSurferDataBase database;
private String name;
private NameSurferEntry entry = new NameSurferEntry(name);

//Initializes the program
public void init() {
    putInteractors();
    database = new NameSurferDataBase(NAMES_DATA_FILE);
}

//Adds the interactors
public void putInteractors() {
    JButton clear = new JButton("Clear");
    JButton clickGraph = new JButton("Graph");
    JLabel nameLabel = new JLabel("Name");
    add(graph);
    add(nameLabel,SOUTH);
    add(textfield,SOUTH);
    add(clickGraph,SOUTH);
    add(clear,SOUTH);
    addActionListeners();
    textfield.addActionListener(this);
    getMouseListeners();
}
//Other code gets user input    

//Graphs the name
public void graphName(String name) {
    entry = database.findEntry(name);
    graph.addEntry(entry);
    graph.update();
}

//ivars
private JTextField textfield = new JTextField(20);
public NameSurferGraph graph = new NameSurferGraph();

}
</code></pre>

<p>Any ideas about what I might be doing wrong?</p>
