package javacodebook.gui.table;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

/**
 * @author Benjamin Rusch
 * 
 * In diesem JFrame wird eine Tabelle platziert. Die Werte der Tabelle werden Ihr 
 * gleich im Konstruktor mitgegeben
 */

public class TableJFrame  extends JFrame {
	
	/** 
	 * Überschriften für Spalten
	 */
	private String columnNames[] = { "Name", "Stadt", "Strasse" };
	
	/** 
	 * Werte der Tabelle
	 */
	private String dataValues[][] =
		{
			{ "Andi Arbeit", "Soest", "Terlindenweg" },
			{ "Manuel Einstellbar", "Karlsruhe", "Kaiserallee" },
			{ "Sigrid Sörwis", "Berlin", "Winsstrasse" }
		};

	/**
	 * Im Konstruktor der Tabelle werden die Werte der Tabelle übergeben.
	 * Dieses Vorgehen ist sehr intuitiv und einfach, möchte man allerdings 
	 * die Werte später ändern, bzw. dynamisch änderbar machen, ist dieser Weg
	 * nicht mehr empfehlenswert
	 */
	private JTable table = new JTable( dataValues, columnNames );
	
	/**
	 * JScrollPane stellt per Default die Tabellenüberschriften von 
	 * eingebetteten Tabellen dar. Legt man die Tabelle einfach in ein 
	 * Panel, würden keine Überschriften erscheinen.
	 */ 
	private JScrollPane scrollPane = new JScrollPane();
	
	private Container content 	= null;
	
	/**
 	*	Konstruktor von TableJFrame.  
 	*/	
	public TableJFrame(String title) {
		
		super(title);
	    content = this.getContentPane();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// Eine Scrollpane darf nicht direkt, sondern muss immer 
		// über Ihren Viewport bestückt werden.
		scrollPane.getViewport().add(table);
		
		// ScrollPane wird auf die contentPane gelegt
        content.add(scrollPane);

	}

}
