Weiter zum Inhalt

13.02.07 Tabellen

package de.jbb.jtable;

import java.awt.Point;
import java.util.ArrayList;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;

public class PointTableModel implements TableModel{

    private ArrayList<TableModelListener> listeners;

    private ArrayList<Point> points;

    public PointTableModel(){
        listeners = new ArrayList<TableModelListener>();
        points = new ArrayList<Point>();
    }

    @Override
    public int getRowCount() {
        return points.size();
    }

    @Override
    public int getColumnCount() {
        return 2;
    }

    @Override
    public String getColumnName(int columnIndex) {
        if(columnIndex == 0){
            return "X-Wert";
        }else{
             return  "Y-Wert";
        }
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return Integer.class;
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {

        if(columnIndex==0){
            return points.get(rowIndex).getX();
        }else{
            return points.get(rowIndex).getY();
        }
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

        if(rowIndex<points.size()){
            points.add(new Point());
        }
        if(columnIndex == 0){
            points.get(rowIndex).x = (Integer)aValue;
        }else{
            points.get(rowIndex).y = (Integer)aValue;
        }
        performListeners();
    }

    @Override
    public void addTableModelListener(TableModelListener l) {
        listeners.add(l);
    }

    @Override
    public void removeTableModelListener(TableModelListener l) {
        listeners.remove(l);
    }

    public void addPoint(Point p){
        setValueAt(p.x, points.size()+1, 0);
        setValueAt(p.y, points.size()+1, 1);
    }

    private void performListeners(){

        for(TableModelListener listener: listeners){
            listener.tableChanged(new TableModelEvent(this));
        }
    }
}

Dieses Model können Sie nun mit jTable.setModel(new PointTableModel()) hinzufügen.

In diesem Kapitel haben Sie einiges zum Thema Tabellen in Java gelernt und unter anderem auch die Trennung von Daten und Grafik mal live mitbekommen.


Kommentar verfassen

Dein E-Mail wird nicht veröffentlicht oder weitergegeben. Pflichtfelder sind mit * markiert.
*