Hallo zusammen,
Ich bin in meinem ersten Java - Projekt und hänge etwas durch. Ich habe eine Liste, die mir meine angebotenen Dienstleistungen abspeichert. diese Liste wird in einer GUI auch als Tabelle ausgegeben. soweit klappt alles. Ich wollte nun aber ein Element entfernen und bekomme es irgendwie nicht hin. Ich habe dazu die Methode removeItem erstellt und übergebe die Zeile, in der User geklickt hat. Die übergabe funktioniert auch (index). Könntet ihr mir sagen was ich ändern muss, damit das Obejkt aus der Liste genommen wird? danke
Ich bin in meinem ersten Java - Projekt und hänge etwas durch. Ich habe eine Liste, die mir meine angebotenen Dienstleistungen abspeichert. diese Liste wird in einer GUI auch als Tabelle ausgegeben. soweit klappt alles. Ich wollte nun aber ein Element entfernen und bekomme es irgendwie nicht hin. Ich habe dazu die Methode removeItem erstellt und übergebe die Zeile, in der User geklickt hat. Die übergabe funktioniert auch (index). Könntet ihr mir sagen was ich ändern muss, damit das Obejkt aus der Liste genommen wird? danke
Java:
package program;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class DienstleistungsListe<D extends Dienstleistungen> implements TableModel{
private D[] array;
private int nextFreeSlot =0 ;
private List<TableModelListener> tableListener = new ArrayList<TableModelListener>();
public DienstleistungsListe (int capacity) {
array = (D[]) new Dienstleistungen[capacity];
}
public void add(D o) {
if (nextFreeSlot == array.length) {
throw new IllegalStateException("Liste ist bereits voll!");
}
array[nextFreeSlot] = o;
nextFreeSlot++;
for (TableModelListener l: tableListener) {
l.tableChanged(new TableModelEvent(this));
}
}
public void removeItem(int index) {
Dienstleistungen d = get(index);
tableListener.remove(index);
}
public D get(int index) {
return array[index];
}
public int getCapacity() {
return array.length;
}
public int getElementCount() {
return nextFreeSlot;
}
@Override
public int getRowCount() {
return getElementCount();
}
@Override
public int getColumnCount() {
return 6;
}
@Override
public String getColumnName(int columnIndex) {
switch (columnIndex) {
case 0:
return "Art";
case 1:
return "Typ";
case 2:
return "Bezeichung";
case 3:
return "Preis/Wert";
case 4:
return "Ort";
case 5:
return "Dauer";
default:
return null;
}
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return String.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return int.class;
case 4:
return String.class;
case 5:
return double.class;
default:
return null;
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Dienstleistungen d = get(rowIndex);
switch (columnIndex) {
case 0:
return d.getArt();
case 1:
return d.getClass().getSimpleName();
case 2:
return d.getBezeichung();
case 3:
return d.getWert();
case 4:
return d.getOrt();
case 5:
return d.getDauer();
default:
return null;
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
}
@Override
public void addTableModelListener(TableModelListener l) {
tableListener.add(l);
}
@Override
public void removeTableModelListener(TableModelListener l) {
tableListener.remove(l);
}
}