import java.awt.*;

import java.awt.event.*;

import javax.swing.*;



public class ComboBoxDemo extends JFrame {

  // Declare an array of Strings for flag titles
  private String[] flagTitles = {"Canada", "China", "Denmark",

    "France", "Germany", "India", "Norway", "United Kingdom",

    "United States of America"};



  // Declare an ImageIcon array for the national flags of 9 countries
  private ImageIcon[] flagImage = {

    new ImageIcon("image/ca.gif"),

    new ImageIcon("image/china.gif"),

    new ImageIcon("image/denmark.gif"),

    new ImageIcon("image/fr.gif"),

    new ImageIcon("image/germany.gif"),

    new ImageIcon("image/india.gif"),

    new ImageIcon("image/norway.gif"),

    new ImageIcon("image/uk.gif"),

    new ImageIcon("image/us.gif")

  };



  // Declare an array of strings for flag descriptions
  private String[] flagDescription = new String[9];



  // Declare and create a description panel
  private DescriptionPanel descriptionPanel = new DescriptionPanel();



  // Create a combo box for selecting countries
  private JComboBox jcbo = new JComboBox(flagTitles);



  public static void main(String[] args) {

    ComboBoxDemo frame = new ComboBoxDemo();

    frame.pack();

    frame.setTitle("ComboBoxDemo");

    frame.setLocationRelativeTo(null); // Center the frame
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setVisible(true);

  }



  public ComboBoxDemo() {

    // Set text description
    flagDescription[0] = "The Maple Leaf flag \n\n" +

      "The Canadian National Flag was adopted by the Canadian " +

      "Parliament on October 22, 1964 and was proclaimed into law " +

      "by Her Majesty Queen Elizabeth II (the Queen of Canada) on " +

      "February 15, 1965. The Canadian Flag (colloquially known " +

      "as The Maple Leaf Flag) is a red flag of the proportions " +

      "two by length and one by width, containing in its center a " +

      "white square, with a single red stylized eleven-point " +

      "mapleleaf centered in the white square.";

    flagDescription[1] = "Description for China ... ";

    flagDescription[2] = "Description for Denmark ... ";

    flagDescription[3] = "Description for France ... ";

    flagDescription[4] = "Description for Germany ... ";

    flagDescription[5] = "Description for India ... ";

    flagDescription[6] = "Description for Norway ... ";

    flagDescription[7] = "Description for UK ... ";

    flagDescription[8] = "Description for US ... ";



    // Set the first country (Canada) for display
    setDisplay(0);



    // Add combo box and description panel to the list
    add(jcbo, BorderLayout.NORTH);

    add(descriptionPanel, BorderLayout.CENTER);



    // Register listener
    jcbo.addItemListener(new ItemListener() {

      /** Handle item selection */

      public void itemStateChanged(ItemEvent e) {

        setDisplay(jcbo.getSelectedIndex());

      }

    });

  }



  /** Set display information on the description panel */

  public void setDisplay(int index) {

    descriptionPanel.setTitle(flagTitles[index]);

    descriptionPanel.setImageIcon(flagImage[index]);

    descriptionPanel.setDescription(flagDescription[index]);

  }

}