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()) der JTable bekannt machen.

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.

Wenn Sie mehr über JTable und deren Einsatz lernen möchten, besuchen Sie doch unser Wiki. Dort steht ein sehr ausführlicher Artikel für Sie bereit: JTable (Tutorial)©

Previous Article
Next Article

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.