# JTable neu laden



## ZentrumderMacht (24. Mrz 2010)

hallo zusammen,

ich suche den Befehl womit ich die Daten der JTable löschen kann also komplett weg  Damit ich neue Daten dort einspielen kann jemand eine Idee?! 

Habe den Code auch parat ist nur sehr viel deswegen schreib ich dies so, hatte schon ein lösungsversuch dieser hat leider nicht geklappt


----------



## Michael... (24. Mrz 2010)

Verwende z.B. DefaultTableModel (oder eine abgeleitete Klasse) als Datenmodel, dann kann man per setDataVector(...) die Tabelle ganz einfach neu befüllen.


----------



## André Uhres (24. Mrz 2010)

ZentrumderMacht hat gesagt.:


> ich suche den Befehl womit ich die Daten der JTable löschen kann also komplett weg  Damit ich neue Daten dort einspielen


Du kannst einfach ein neues TableModel setzen: JTable#setModel(..).
Falls du das "DefaultTableModel" benutzen willst: es bietet viele nützliche Methoden zur Veränderung der Daten an. Zum Beispiel:
- setRowCount(0) löscht alle Zeilen
- addRow(..) fügt eine neue Zeile hinzu
Oder du baust dir ein eigenes TableModel mit geeigneten Methoden. Mehr darüber findest du in unseren FAQ (JTable Tutorial).


----------



## ZentrumderMacht (24. Mrz 2010)

mh, ne leite von Abstract Model ab naja ich zeig einfach mal den Code :

Also kurze erörterung  , ich versuche mit der der Klasse AddVerantwortlicher eben ein neuen Datensatz in meine Datenbank zu bekommen, dies klappt auch  jetzt dachte ich wenn der neue Datensatz drinsteht muss ich nur meine alte holeDaten Methode VerantwortlicherTableModel nehmen diese holt mir neu die Daten und speichert mir diese in meine tabelle, wie beim starten der Tabelle, dort klappt dies ja auch



```
public class VerantwortlicherTableModel extends AbstractTableModel {
	Object[][] objects = new Object[1][3];
	private StammdatenDelegate delegate = StammdatenDelegate.getInstance();
	ArrayList<VerantwortlicherEntity> list = new ArrayList<VerantwortlicherEntity>();

	private final static Logger log = Logger
			.getLogger(VerantwortlicherTableModel.class);
	private Object[][] data = new Object[][] {};

	int COL_POS_NAME = 0;
	int COL_POS_AKTIV = 1;
	int COL_POS_SORT = 2;

	int row = 0;

	public void holeDaten() {
		list = (ArrayList<VerantwortlicherEntity>) delegate
				.suchenallerVerantwortlicher();
		for (VerantwortlicherEntity entity : list) {
			addRow(entity, row);
			row++;
		}
		fireTableChanged(null);
	}

	public String getColumnName(int pos) {
		String[] cols = new String[] { "Name", "Aktiv", "Sotierung" };
		return cols[pos];
	}

	public int getRowCount() {
		return data.length;
	}

	public int getColumnCount() {
		return 3;
	}

	public boolean isCellEditable(int row, int column) {
		return true;
	}

	public void addRow(int position) {
		position = Math.max(0, Math.min(data.length, position));
		Object[][] newObjects = new Object[data.length + 1][];

		System.arraycopy(data, 0, newObjects, 0, position);
		System.arraycopy(data, position, newObjects, position + 1, data.length
				- position);

		newObjects[position] = new Object[getColumnCount()];
		data = newObjects;

		fireTableRowsInserted(position, position);
	}

	public void addRow(VerantwortlicherEntity entity, int positionRow) {

		addRow(positionRow);
		data[positionRow][COL_POS_NAME] = entity.getName();
		data[positionRow][COL_POS_AKTIV] = entity.getAkiv();
		data[positionRow][COL_POS_SORT] = entity.getSortierung();
	}

	public void setValueAt(Object value, int row, int col) {
		data[row][col] = value;
		fireTableCellUpdated(row, col);
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		return data[rowIndex][columnIndex];
	}

	public void speicherDaten() {
		int positionRow = 0;
		for (VerantwortlicherEntity entity : list) {
			entity.setName((String) data[positionRow][COL_POS_NAME]);
			if (data[positionRow][COL_POS_AKTIV].equals("true")) {
				entity.setAkiv(true);
			} else if (data[positionRow][COL_POS_AKTIV].equals("false")) {
				entity.setAkiv(false);
			}
			entity.setSortierung((Integer) data[positionRow][COL_POS_SORT]);
			positionRow++;
			delegate.speichernVerantwortlicher(entity);
		}
	}

	public void deleteRow(int position) {
		for (VerantwortlicherEntity entity : list) {
			if (data[position][COL_POS_NAME].equals(entity.getName())
					&& data[position][COL_POS_SORT].equals(entity
							.getSortierung())) {
				entity.setDeleted(true);
				delegate.speichernVerantwortlicher(entity);
				list.remove(position);
				fireTableRowsDeleted(position, position);
				break;
			}
		}
	}
}
```


```
public class VerantwortlicherModul extends AbstractModul {

	/** Creates new form TestPanel */
	public VerantwortlicherModul() {

		initComponents();
		init();
		setName("Verantwortlicher");
		verantwortlicherTable.holeDaten();
		zahlerhochsetzen(1);
	}

	void init() {
		verantwortlicherTable.setAutoCreateRowSorter(true);
		int anzahlSpalten = verantwortlicherTable.getRowCount() - 1;
		jLabel2.setText((new Integer(anzahlSpalten)).toString());
		verantwortlicherTable.getModel().addTableModelListener(
				new TableModelListener() {

					public void tableChanged(TableModelEvent e) {
						jtabletablechanged(e);
					}
				});

	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always
	 * regenerated by the Form Editor.
	 */
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {
		java.awt.GridBagConstraints gridBagConstraints;

		jLabel1 = new javax.swing.JLabel();
		jLabel2 = new javax.swing.JLabel();
		jPanel1 = new javax.swing.JPanel();
		jScrollPane2 = new javax.swing.JScrollPane();
		verantwortlicherTable = new VerantwortlicherTable();
		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();
		jComboBox1 = new javax.swing.JComboBox();
		_tfxMandant = new javax.swing.JLabel();

		setLayout(new java.awt.GridBagLayout());

		jLabel1.setText("Anzahl Datensätze: ");
		gridBagConstraints = new java.awt.GridBagConstraints();
		gridBagConstraints.gridx = 0;
		gridBagConstraints.gridy = 7;
		gridBagConstraints.gridwidth = 2;
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
		gridBagConstraints.insets = new java.awt.Insets(0, 4, 4, 0);
		add(jLabel1, gridBagConstraints);

		jLabel2.setText("0");
		gridBagConstraints = new java.awt.GridBagConstraints();
		gridBagConstraints.gridx = 2;
		gridBagConstraints.gridy = 7;
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
		gridBagConstraints.insets = new java.awt.Insets(0, 0, 4, 0);
		add(jLabel2, gridBagConstraints);

		jScrollPane2.setViewportView(verantwortlicherTable);

		jButton1.setText("Einfügen");
		jButton1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton1ActionPerformed(evt);
			}
		});

		jButton2.setText("Löschen");
		jButton2.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton2ActionPerformed(evt);
			}
		});

		javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
				jPanel1);
		jPanel1.setLayout(jPanel1Layout);
		jPanel1Layout
				.setHorizontalGroup(jPanel1Layout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								javax.swing.GroupLayout.Alignment.TRAILING,
								jPanel1Layout
										.createSequentialGroup()
										.addComponent(
												jScrollPane2,
												javax.swing.GroupLayout.DEFAULT_SIZE,
												639, Short.MAX_VALUE)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
										.addGroup(
												jPanel1Layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.TRAILING,
																false)
														.addComponent(
																jButton1,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																Short.MAX_VALUE)
														.addComponent(
																jButton2,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																92,
																Short.MAX_VALUE))
										.addContainerGap()));
		jPanel1Layout
				.setVerticalGroup(jPanel1Layout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								jPanel1Layout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												jPanel1Layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																jScrollPane2,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																362,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addGroup(
																jPanel1Layout
																		.createSequentialGroup()
																		.addComponent(
																				jButton1)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				jButton2)))
										.addContainerGap(
												javax.swing.GroupLayout.DEFAULT_SIZE,
												Short.MAX_VALUE)));

		gridBagConstraints = new java.awt.GridBagConstraints();
		gridBagConstraints.gridx = 0;
		gridBagConstraints.gridy = 1;
		gridBagConstraints.gridwidth = 22;
		gridBagConstraints.gridheight = 6;
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
		gridBagConstraints.weightx = 500.0;
		gridBagConstraints.weighty = 500.0;
		add(jPanel1, gridBagConstraints);

		jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(
				new String[] { "Walbusch" }));
		gridBagConstraints = new java.awt.GridBagConstraints();
		gridBagConstraints.gridx = 1;
		gridBagConstraints.gridy = 0;
		gridBagConstraints.gridwidth = 2;
		gridBagConstraints.insets = new java.awt.Insets(3, 0, 3, 0);
		add(jComboBox1, gridBagConstraints);

		_tfxMandant.setText("Mandant");
		gridBagConstraints = new java.awt.GridBagConstraints();
		gridBagConstraints.gridx = 0;
		gridBagConstraints.gridy = 0;
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
		gridBagConstraints.insets = new java.awt.Insets(7, 11, 8, 10);
		add(_tfxMandant, gridBagConstraints);
	}// </editor-fold>

	private void jtabletablechanged(TableModelEvent e) {
		if (verantwortlicherTable.getSelectedRow() + 1 == verantwortlicherTable
				.getRowCount()) {
			verantwortlicherTable.addRow(verantwortlicherTable.getRowCount());
			zahlerhochsetzen(1);
		}
	}

	public void zahlerhochsetzen(int anzahl) {
		jLabel2.setText((new Integer(verantwortlicherTable.getRowCount()
				- anzahl)).toString());
	}

	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
		int position;
		position = verantwortlicherTable.getSelectedRow();
		verantwortlicherTable.addRow(position);
		AddVerantwortlicher verantwortlicher = new AddVerantwortlicher();
	}
	
	public void setzeDaten(){
		verantwortlicherTable.holeDaten();
	}

	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
		int position;
		position = verantwortlicherTable.getSelectedRow();
		verantwortlicherTable.deleteRow(position);
		zahlerhochsetzen(2);
	}

	// Variables declaration - do not modify

	private javax.swing.JLabel _tfxMandant;
	private javax.swing.JButton jButton1;
	private javax.swing.JButton jButton2;
	private javax.swing.JComboBox jComboBox1;
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JPanel jPanel1;
	private javax.swing.JScrollPane jScrollPane2;
	private VerantwortlicherTable verantwortlicherTable;

	// End of variables declaration

	// *******************************************************************
	// Implementiert Modul
	// *******************************************************************
	public void open() {

	}

	public void aktualisieren() {

	}

	public void speichern() {
		verantwortlicherTable.speicherDaten();
	}

	public void deactivate() {
		super.deactivate();

	}

	public void setModus() {

	}
```


```
public class AddVerantwortlicher extends javax.swing.JFrame {
	int position;
	private StammdatenDelegate delegate = StammdatenDelegate.getInstance();

	/** Creates new form addVerantwortlicher */
	public AddVerantwortlicher() {
		initComponents();
		setVisible(true);
		setSize(500, 200);
	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always
	 * regenerated by the Form Editor.
	 */
	public void positionsuebergabe(int pos) {
		position = pos;
	}

	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {

		jButton1 = new javax.swing.JButton();
		jButton2 = new javax.swing.JButton();
		_tfxName = new javax.swing.JLabel();
		_tfxsotiernummer = new javax.swing.JLabel();
		_tfxaktiv = new javax.swing.JLabel();
		jTextField1 = new javax.swing.JTextField();
		jTextField2 = new javax.swing.JTextField();
		jCheckBox1 = new javax.swing.JCheckBox();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

		jButton1.setText("Anlegen");
		jButton1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton1ActionPerformed(evt);
			}
		});

		jButton2.setText("Beenden");
		jButton2.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton2ActionPerformed(evt);
			}
		});

		_tfxName.setText("Name:");

		_tfxsotiernummer.setText("Sotiernummer:");

		_tfxaktiv.setText("Aktiv:");

		jTextField1.setText("");

		jTextField2.setText("");

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout
				.setHorizontalGroup(layout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								layout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addComponent(
																_tfxsotiernummer)
														.addComponent(_tfxName)
														.addComponent(_tfxaktiv))
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
										.addGroup(
												layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																layout
																		.createSequentialGroup()
																		.addGap(
																				131,
																				131,
																				131)
																		.addComponent(
																				jButton1,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				92,
																				Short.MAX_VALUE)
																		.addPreferredGap(
																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																		.addComponent(
																				jButton2))
														.addComponent(
																jCheckBox1)
														.addGroup(
																layout
																		.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.TRAILING,
																				false)
																		.addComponent(
																				jTextField2,
																				javax.swing.GroupLayout.Alignment.LEADING)
																		.addComponent(
																				jTextField1,
																				javax.swing.GroupLayout.Alignment.LEADING,
																				javax.swing.GroupLayout.DEFAULT_SIZE,
																				143,
																				Short.MAX_VALUE)))
										.addContainerGap()));
		layout
				.setVerticalGroup(layout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								layout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.BASELINE)
														.addComponent(
																jTextField1,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addComponent(_tfxName))
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
										.addGroup(
												layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.BASELINE)
														.addComponent(
																_tfxsotiernummer)
														.addComponent(
																jTextField2,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																javax.swing.GroupLayout.PREFERRED_SIZE))
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
										.addGroup(
												layout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.LEADING)
														.addGroup(
																layout
																		.createSequentialGroup()
																		.addGap(
																				18,
																				18,
																				18)
																		.addGroup(
																				layout
																						.createParallelGroup(
																								javax.swing.GroupLayout.Alignment.BASELINE)
																						.addComponent(
																								jButton2)
																						.addComponent(
																								jButton1)))
														.addGroup(
																layout
																		.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.BASELINE)
																		.addComponent(
																				jCheckBox1)
																		.addComponent(
																				_tfxaktiv)))
										.addContainerGap(32, Short.MAX_VALUE)));

		pack();
	}// </editor-fold>

	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

		VerantwortlicherModul modul = new VerantwortlicherModul();
		VerantwortlicherEntity entity = new VerantwortlicherEntity();
		if (!jTextField1.equals("")) {
			entity.setName(jTextField1.getText().trim());
		}
		if (!jTextField2.equals("")) {
			int intZahl = Integer.parseInt(jTextField2.getText().trim());
			entity.setSortierung(intZahl);
		}
		if (!jCheckBox1.equals(true)) {
			entity.setAkiv(true);
		}

		else if (!jCheckBox1.equals(false)) {
			entity.setAkiv(false);
		}
		delegate.speichernVerantwortlicher(entity);
		modul.setzeDaten();
	}

	private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
		setVisible(false);
	}

	/**
	 * @param args
	 *            the command line arguments
	 */
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new AddVerantwortlicher().setVisible(true);
			}
		});
	}

	// Variables declaration - do not modify
	private javax.swing.JLabel _tfxName;
	private javax.swing.JLabel _tfxaktiv;
	private javax.swing.JLabel _tfxsotiernummer;
	private javax.swing.JButton jButton1;
	private javax.swing.JButton jButton2;
	private javax.swing.JCheckBox jCheckBox1;
	private javax.swing.JTextField jTextField1;
	private javax.swing.JTextField jTextField2;
	// End of variables declaration

}
```


----------



## Foermchen82 (24. Mrz 2010)

Füg doch einfach deinem Model den neuen Datensatz hinzu und feuere im Model das entsprechende Event, welches sagt, dass daten eingefügt wurden. Das heißt glaub ich: fireTableDataInserted() oder so ähnlich. Dann aktualisiert sich die Tabelle


----------



## zentrumdermacht (24. Mrz 2010)

dies hab ich voher versucht dann bekam ich immer ein arrayoutoffbounce


----------



## zentrumder (24. Mrz 2010)

deswegen such ich grad eine andere Lösung aber wenn du mir ein beispiel geben könntest wie ich ein weiteren wert an die Tabelle hinzufügen kann dann bin ich dafür offen


----------



## Michael... (24. Mrz 2010)

Ich würde die Klasse zwar von DefaultTableModel erben lassen.
Aber in Deinem Fall musst Du quasi nur Dein Array data auf das neue Datenarray referenzieren lassen und anschliessend fireTableChanged aufrufen.


----------



## zentrum (24. Mrz 2010)

mh, hättest kurz ein beispiel das ich mir anschauen könnte?!


----------



## Michael... (24. Mrz 2010)

Hab mir Deinen Code mal genauer angeschaut. 
Warum verwendest Du nicht gleich die Liste als Datenmodel anstatt sie in ein Array zu zwängen, das würde auch das Hinzufügen und Entfernen von Zeilen erleichtern.

Mit folgenden zwei Zeilen könnstest Du deine Tabelle leeren bzw. ja nach Array neu befüllen:

```
data = new Object[][] {};
fireTableDataChanged();
```


----------



## André Uhres (24. Mrz 2010)

zentrum hat gesagt.:


> hättest kurz ein Beispiel das ich mir anschauen könnte?


Der Quellcode von "_public class DefaultTableModel extends AbstractTableModel_" steht der Öffentlichkeit frei zur Verfügung. Du kannst z.B. dort reinschauen. Dann siehst du, wie alles funktioniert und wie du so was selbst machen kannst


----------



## zentrum (24. Mrz 2010)

wie verwende ich bitte eine Liste als Datenmodell?!.... 

Tut mir leid, wegen so dummen fragen aber verstehe es eben besser an beispielen als wenn mir da son etlich langer Text hingelegt wird 

^^


----------



## Foermchen82 (24. Mrz 2010)

du legst dir ein eigenes TableModel an mit der Liste als Attribut.
In der SetValueAt und GetValueAt Methode kannst du dann ganz bequem per Row-Index auf das entsprechende Listenelement zugreifen.
Und wenn du Elemente Löschst oder Hinzufügst bekommst du bei ner Liste keiner IndexOutOfBounds


----------



## Michael... (24. Mrz 2010)

Hier mal ein rudimentäres Datenmodel mit einer Liste:

```
public class PersonenTableModel extends AbstractTableModel {
	private ArrayList<Person> list = new ArrayList<Person>();

	public void setData(ArrayList<Person> list) {
		this.list = list;
		fireTableDataChanged();
	}

	public String getColumnName(int pos) {
		switch (pos) {
		case 0:
			return "Name";
		case 1:
			return "Vorname";
		default:
			return null;
		}
	}

	public int getRowCount() {
		return list.size();
	}

	public int getColumnCount() {
		return 2;
	}

	public boolean isCellEditable(int row, int column) {
		return true;
	}

	public void setValueAt(Object value, int row, int column) {
		Person person = list.get(row);
		switch (column) {
		case 0:
			person.setName(value.toString());
			break;
		case 1:
			person.setVorname(value.toString());
			break;
		default:
			return;
		}
		fireTableCellUpdated(row, column);
	}

	public Object getValueAt(int row, int column) {
		Person person = list.get(row);
		switch (column) {
		case 0:
			return person.getName();
		case 1:
			return person.getVorname();
		default:
			return null;
		}
	}
}
```
Die Klasse Person könnte dann so aussehen:

```
public class Person {
		private String name, vorname;

		public Person(String name, String vorname) {
			this.name = name;
			this.vorname = vorname;
		}

		public String getName() {
			return this.name;
		}

		public String getVorname() {
			return this.vorname;
		}

		public void setName(String name) {
			this.name = name;
		}

		public void setVorname(String name) {
			this.vorname = vorname;
		}
	}
```


----------



## zentrum (29. Mrz 2010)

also hab das jetzt versucht so umzusetzten wie beschrieben, die bezüglich hätte ich noch eine Frage:

bei 
	
	
	
	





```
public void setValueAt(Object value, int row, int column) {
	VerantwortlicherEntity person = list.get(row);
    switch (column) {
    case 0:
        person.setName(value.toString());
        break;
    case 1:
    	person.setAkiv((boolean) value);
        break;
    case 2:
    	person.setSortierung((Integer)value);
    default:
        return;
    }
    fireTableCellUpdated(row, column);
}
}
```
natürlich ist Case 1 falsch, wisst ihr zufällig wie ich das problem löse 


sonst sieht meine Klasse so aus: 


```
public class VerantwortlicherTableModel extends AbstractTableModel {
	Object[][] objects = new Object[1][3];
	private StammdatenDelegate delegate = StammdatenDelegate.getInstance();
	ArrayList<VerantwortlicherEntity> list = new ArrayList<VerantwortlicherEntity>();

	public void holeDaten() {
		list = (ArrayList<VerantwortlicherEntity>) delegate
				.suchenallerVerantwortlicher();
		setData(list);
	}
	
	public void setData(ArrayList<VerantwortlicherEntity> list) {
	    this.list = list;
	    fireTableDataChanged();
	}

	int COL_POS_NAME = 0;
	int COL_POS_AKTIV = 1;
	int COL_POS_SORT = 2;

	int row = 0;

	
	public void speicherDaten() {
		delegate.speichernVielerVerantwortlicher(list);
	
	}

	
	public void deleteRow(int position) {
		
	}

public String getColumnName(int pos) {
    switch (pos) {
    case 0:
        return "Name";
    case 1:
        return "Sotiernummer";
    case 2:
    	return "aktiv";
    default:
        return null;
    }
}

public int getRowCount() {
    return list.size();
}

public int getColumnCount() {
    return 3;
}

public boolean isCellEditable(int row, int column) {
    return true;
}

public void setValueAt(Object value, int row, int column) {
	VerantwortlicherEntity person = list.get(row);
    switch (column) {
    case 0:
        person.setName(value.toString());
        break;
    case 1:
    	person.setAkiv((boolean) value);
        break;
    case 2:
    	person.setSortierung((Integer)value);
    default:
        return;
    }
    fireTableCellUpdated(row, column);
}

public Object getValueAt(int row, int column) {
	VerantwortlicherEntity person = list.get(row);
    switch (column) {
    case 0:
        return person.getName();
    case 1:
        return person.getAkiv();
    case 2:
    	return person.getSortierung();
    default:
        return null;
    }
}
}
```


----------



## zentrum (29. Mrz 2010)

noch eine frage wenn ich ein neues Entity hinzufügen geht dies so, dass klappt auch

```
public void anlegenDatensatz(){
		VerantwortlicherEntity entity = new VerantwortlicherEntity();
		entity.setName("");
		entity.setAkiv(false);
		entity.setSortierung(0);
		list.add(entity);
		fireTableDataChanged();
	}
```

aber kann ich ihm auch sagen das ich es an eine gewisse Stelle will also z.b. ich lese aus mit getselecetedRow() und das -1 ?!


----------



## zentrum (29. Mrz 2010)

also das Problem mit dem an eine gewisse stelle einfügen habe ich gelöst 

jetzt nur noch dies mit dem case fall  bitte um hilfe


----------



## Michael... (29. Mrz 2010)

könntest ja wie bei int auch bei boolean die Wrapperklasse Boolean nehmen.


----------



## zentrum (29. Mrz 2010)

wenn ich dies so probiere sagt er mir : 

```
case 1:
			person.setAkiv((boolean) value);
			break;
```

Cannot Cast from object to boolean...


----------



## zentrum (29. Mrz 2010)

gelöst


----------

