Table.java


</COMMENT> Nie można wyświetlić apletu!!

//: c13:Table.java
// Przykład z książki 'Thinking in Java, wydanie 2.', autor - Bruce Eckel
// www.BruceEckel.com 
// Patrz informacje o prawach autorskich podane w pliku CopyRight.txt.
// Prosta prezentacja JTable.
// <applet code=Table
//  width=350 height=200></applet>
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;
import com.bruceeckel.swing.*;

public class Table extends JApplet {
  JTextArea txt = new JTextArea(4, 20);
  // Obiekt TableModel zajmuje się wszystkimi danymi:
  class DataModel extends AbstractTableModel {
    Object[][] data = {
      {"jeden", "dwa", "trzy", "cztery"},
      {"pięć", "sześć", "siedem", "osiem"},
      {"dziewięć", "dziesięć", "jedenaście", "dwanaście"},
    };
    // Wyświetla dane kiedy tabela się zmienia:
    class TML implements TableModelListener {
      public void tableChanged(TableModelEvent e){
        txt.setText(""); // Wyczyszczenie
        for(int i = 0; i < data.length; i++) {
          for(int j = 0; j < data[0].length; j++)
            txt.append(data[i][j] + " ");
          txt.append("\n");
        }
      }
    }
    public DataModel() {
      addTableModelListener(new TML());
    }
    public int getColumnCount() { 
      return data[0].length; 
    }
    public int getRowCount() { 
      return data.length;
    }
    public Object getValueAt(int row, int col) {
      return data[row][col]; 
    }
    public void 
    setValueAt(Object val, int row, int col) {
      data[row][col] = val;
      // Poinformowanie o wystąpieniu zmian:
      fireTableDataChanged();
    }
    public boolean 
    isCellEditable(int row, int col) { 
      return true; 
    }
  }
  public void init() {
    Container cp = getContentPane();
    JTable table = new JTable(new DataModel());
    cp.add(new JScrollPane(table));
    cp.add(BorderLayout.SOUTH, txt);
  }
  public static void main(String[] args) {
    Console.run(new Table(), 350, 200);
  }
} ///:~