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

public class TableCellRendererEditorDemo extends JApplet {
  // Create table column names
  private String[] columnNames =
    {"Title", "Copies Needed", "Publisher", "Date Published",
     "In-stock", "Book Photo"};

  // Create image icons
  private ImageIcon intro1eImageIcon = new ImageIcon(
    getClass().getResource("/image/intro1e.gif"));
  private ImageIcon intro2eImageIcon = new ImageIcon(
    getClass().getResource("/image/intro2e.gif"));
  private ImageIcon intro3eImageIcon = new ImageIcon(
    getClass().getResource("/image/intro3e.jpg"));

  // Create table data
  private Object[][] rowData = {
    {"Introduction to Java Programming", 120,
     "Que Education & Training",
      new GregorianCalendar(1998, 1-1, 6).getTime(),
      false, intro1eImageIcon},
    {"Introduction to Java Programming, 2E", 220,
     "Que Education & Training",
      new GregorianCalendar(1999, 1-1, 6).getTime(),
      false, intro2eImageIcon},
    {"Introduction to Java Programming, 3E", 220,
      "Prentice Hall",
      new GregorianCalendar(2000, 12-1, 0).getTime(),
      true, intro3eImageIcon},
  };

  // Create a table model
  private MyTableModel tableModel = new MyTableModel(
    rowData, columnNames);

  // Create a table
  private JTable jTable1 = new JTable(tableModel);

  public TableCellRendererEditorDemo() {
    jTable1.setRowHeight(60);
    add(new JScrollPane(jTable1),
      BorderLayout.CENTER);
  }

  public static void main(String[] args) {
    TableCellRendererEditorDemo applet =
      new TableCellRendererEditorDemo();
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Table Cell Renderer and Editor Demo");
    frame.getContentPane().add(applet, BorderLayout.CENTER);
    applet.init();
    applet.start();
    frame.pack();
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    frame.setLocation((d.width - frame.getSize().width) / 2,
                      (d.height - frame.getSize().height) / 2);
    frame.setVisible(true);
  }
}