import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;

    // Display a JTabbedPane with alternative data views.
    // Illustrate receipt of a ChangeEvent when a tab
    // is selected.
class SwingTabbedFrame extends JFrame {
        // Receive the data to be displayed.
    public SwingTabbedFrame(RangeCounts data) {
        final int width = 450, height = 300;
        setSize(width,height);
        Container contents = getContentPane();

        // A tabbed pane to hold the alternative views of the data.
        JTabbedPane pane = new JTabbedPane();
        pane.add("Bar Chart",new SwingBarChart(data));
        pane.add("Cumulative Chart",new SwingCumulativeChart(data));
        // Be notified of changes to the selected pane.
        pane.addChangeListener(new ChangeListener(){
            public void stateChanged(ChangeEvent e){
                // Get a reference to the pane.
                JTabbedPane p = (JTabbedPane) e.getSource();
                // Report the selected component.
                System.out.println("Tab: "+p.getSelectedIndex()+" selected.");
            }
        });

        contents.add(new JLabel("Data Views",JLabel.CENTER),"North");
        contents.add(pane,"Center");
        contents.add(new QuitJButton(),"South");
    }
}
