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

class TableModel extends AbstractTableModel implements TableModelListener
{
  Object[][] veri={{"satır bir - sütun bir","satır bir - sütun iki"},
                         {"satır iki - sütun bir","satır iki - sütun iki"}};
  String[] baslik={"sütun bir","sütun iki"};
  public TableModel()
  {
  addTableModelListener(this);
  }
  public int getRowCount() {return veri.length;}
  public int getColumnCount() {return baslik.length;}
  public Object getValueAt(int satir,int sutun) {return veri[satir][sutun];}
  public String getColumnName(int c) {return baslik[c];}
  public void setValueAt(Object val, int row, int col)
  {
    veri[row][col] = val;
    // Değişimin olduğunu göster:
    fireTableDataChanged();
  }
  public void tableChanged(TableModelEvent e)
  {
  String s="Tablodaki değer değiştirildi ";
  JOptionPane.showMessageDialog(null,s,"Tablodaki değer değiştirildi",
  JOptionPane.WARNING_MESSAGE);
  }
  public boolean isCellEditable(int row, int col) {return true;}
}

public class tableSWF_2000 extends JFrame
{
    private Container c;

    public tableSWF_2000()
    {
        super("Tablo örneği");
        c=getContentPane();
        c.setLayout(new BorderLayout());
        setSize(300,300);
        addWindowListener(new BasicWindowMonitor());
        TableModel tm=new TableModel();
        JTable jt=new JTable(tm);
        JScrollPane jsp=new JScrollPane(jt);
        c.add(jsp,BorderLayout.NORTH);
        f=new JTextField();
        c.add(f,BorderLayout.SOUTH);
    }

    //=====================================================
      public static void main(String[] args)
      {
      tableSWF_2000 pencere= new tableSWF_2000();
      pencere.setVisible(true);
      }
}
