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

import javax.swing.table.*;

// Tabelle mit JScrollPane
// Tabelle mit Array data

public class Tabelle02 extends JFrame {
    // globales Feld zur Speicherung der Daten
  final int AnzRows = 40;
  final int AnzCols = 10;
  Object[][] data;

  //Frame konstruieren
  public Tabelle02() {
    this.setSize(650, 450);
    setLocation(100,100);
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    this.setTitle("Tabelle02");
    setGUI();
  }

  void setGUI() {
    JTable tabelle;
    JScrollPane scrollpane;

    createData();
    tabelle = createTable();

    scrollpane = new JScrollPane(tabelle);
    this.getContentPane().add(
       scrollpane, BorderLayout.CENTER);
  }


  // createTable
  public JTable createTable() {
    // Create a model of the data.
    TableModel dataModel = new AbstractTableModel() {
            // Diese Methode muss immer implementiert werden
        public int getColumnCount() {
          return AnzCols;
        }
            // Diese Methode muss immer implementiert werden
        public int getRowCount() {
           return AnzRows;
        }
            // Diese Methode muss immer implementiert werden
        public Object getValueAt(int row, int column) {
          return data[row][column];
        }
          // Header
        public String getColumnName(int column) {
          return new String( "Col:"+Integer.toString(column+1) );
        }

        public Class getColumnClass(int column) {
          return getValueAt(0, column).getClass();
          }

        //public boolean isCellEditable(int row, int column) {
        //  return true;  // getColumnClass(column) == String.class;
        //}
        //public void setValueAt(Object aValue, int row, int column) {
        //   data[row][column] = aValue;
        //}
     };

     JTable table = new JTable(dataModel);

        return table;
  } // createTable



  public void createData() {
        // Create the dummy data (a few rows of names)
   data = new String[ AnzRows][AnzCols];
   for (int r=0; r<AnzRows; r++) {
     for (int c=0; c<AnzCols; c++) {
       data[r][c] = Integer.toString(r*1000+c);
     }
   }
  }


  public static void main(String[] args) {
    Tabelle02 frame = new Tabelle02();
    frame.setVisible(true);
  }


}
