Hab eine Tabelle mit folgendem Aussehen:
In der rechten Spalte möchte ich nach einer bestimmten erfolgreichen Funktion Haken oder ein Error Icon setzen.
Mein Code sieht wie folgt aus:
Klasse KeyIconCellRenderer
Dann in der Gui
aütm ist ein selbsterstelltes TableModel mit folgendem Code:
Die Funktion welche jetzt Haken oder Error Icon zeichnen soll sieht wie folgt aus:
Leider werden beim Aufruf der Funktion setNewStatus keine Icons dargestellt, ohne jegliche Fehlermeldung.
In der rechten Spalte möchte ich nach einer bestimmten erfolgreichen Funktion Haken oder ein Error Icon setzen.
Mein Code sieht wie folgt aus:
Klasse KeyIconCellRenderer
Java:
class KeyIconCellRenderer extends DefaultTableCellRenderer {
@Override
public void setValue(Object value) {
if (value instanceof Icon) {
setIcon((Icon) value);
setText("");
} else {
setIcon(null);
super.setValue(value);
}
}
}
Dann in der Gui
Java:
jTableÜbertragung.getColumnModel().getColumn(4).setCellRenderer(new KeyIconCellRenderer());
jTableÜbertragung.setModel(aütm);
aütm ist ein selbsterstelltes TableModel mit folgendem Code:
Java:
public class ArtikelÜbertragungTableModel implements TableModel{
private ArrayList<Artikel> liste;
private ArrayList listeners;
public ArtikelÜbertragungTableModel(){
liste = new ArrayList<Artikel>();
listeners = new ArrayList();
}
public int getRowCount() {
if(liste ==null){
return 0;
}
return liste.size();
}
public int getColumnCount() {
return 5;
}
public String getColumnName(int columnIndex) {
switch(columnIndex){
case 0: return "OK";
case 1: return "ID";
case 2: return "Titel";
case 3: return "Angebotstyp";
case 4: return "Ergebnis";
default: return null;
}
}
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex){
case 0: return Boolean.class;
case 1: return Integer.class;
case 2: return String.class;
case 3: return String.class;
case 4: return Icon.class;
default: return null;
}
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
if(columnIndex == 0)
return true;
return false;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Artikel art = liste.get(rowIndex);
switch(columnIndex){
case 0: return art.isUebertragen();
case 1: return art.getArtikelID();
case 2: return art.getTitel();
case 3: return art.getArtikelTyp();
case 4: return null;
default: return null;
}
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Artikel art = (Artikel)liste.get(rowIndex);
switch (columnIndex){
case 0:
art.setUebertragen(((Boolean)aValue).booleanValue());
stillSelected();
break;
}
}
public void addTableModelListener(TableModelListener l) {
listeners.add(l);
}
public void removeTableModelListener(TableModelListener l) {
listeners.remove(l);
}
/**
* Gibt den Index des uebergebenen Artikels in der Tabelle wieder
* @param art
* @return index vom Artikel in der Tabelle
*/
public int getIndexOfArticle(Artikel art){
int artID = art.getArtikelID();
for (int i=0; i<liste.size(); i++){
Artikel a = liste.get(i);
if(a.getArtikelID() == artID){
return i;
}
}
return -1;
}
Die Funktion welche jetzt Haken oder Error Icon zeichnen soll sieht wie folgt aus:
Java:
public void setNewStatus(Artikel art, boolean err) {
if (err){
jTableÜbertragung.setValueAt(error, aütm.getIndexOfArticle(art), 4);
} else {
jTableÜbertragung.setValueAt(haken, aütm.getIndexOfArticle(art), 4);
}
jTableÜbertragung.repaint();
}
Leider werden beim Aufruf der Funktion setNewStatus keine Icons dargestellt, ohne jegliche Fehlermeldung.
Zuletzt bearbeitet: