Hallo,
habe ein kleines Problemchen mit meiner JTable welche in der letzten Spalte einen Button zum löschen beeinhaltet:
Wenn ich den Button drücke wird die Zeile gelöscht. Der Satz verschwindet aus der Tabelle, wie gewünscht, aber in der Zeile die in diese Zeile rutscht hat einen unsichtbaren Button!
Nachdem ich den Fokus von der Spalte entferne, sprich den Fokus zB auf die vorherige Spalte setze, ist wieder alles in Ordnung.
Habe mal rein faktisch ausprobiert ob es gehen würde wenn ich nach dem löschen alle FocusLost Methoden von allen vorhandenen FocusListeners auslöse, aber das hat das Problem nicht behoben.
So sieht die Tabelle normal aus:
So sieht es aus nachdem ich eine Zeile herausgelöscht habe:
Code:
TableCellEditor für den Button:
TableCellRenderer für den Button:
Code zum entfernen der Zeile:
Hoffe auf Eure Hilfe
Danke, Grüße
Times
Edit: Die Bilder sollten nun auch für euch sichtbar sein :*
habe ein kleines Problemchen mit meiner JTable welche in der letzten Spalte einen Button zum löschen beeinhaltet:
Wenn ich den Button drücke wird die Zeile gelöscht. Der Satz verschwindet aus der Tabelle, wie gewünscht, aber in der Zeile die in diese Zeile rutscht hat einen unsichtbaren Button!
Nachdem ich den Fokus von der Spalte entferne, sprich den Fokus zB auf die vorherige Spalte setze, ist wieder alles in Ordnung.
Habe mal rein faktisch ausprobiert ob es gehen würde wenn ich nach dem löschen alle FocusLost Methoden von allen vorhandenen FocusListeners auslöse, aber das hat das Problem nicht behoben.
So sieht die Tabelle normal aus:

So sieht es aus nachdem ich eine Zeile herausgelöscht habe:

Code:
TableCellEditor für den Button:
Code:
private class ButtonEditor extends AbstractCellEditor implements TableCellEditor {
@Override
public Component getTableCellEditorComponent(JTable table,Object value,boolean isSelected, int row, int column) {
return DTable.this.btDelete;
}
@Override
public boolean isCellEditable(EventObject anEvent) {
if(anEvent instanceof MouseEvent) {
return ((MouseEvent)anEvent).getClickCount() >= 1;
}
return true;
}
@Override
public Object getCellEditorValue() {
return DTable.this.btDelete;
}
}
TableCellRenderer für den Button:
Code:
private class TableCellRenderer extends DefaultTableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (column == DTable.this.indexTableColumnDelete){
return DTable.this.btDelete;
}else{
Component cmp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (table.isEnabled()){
if (getEditingRow() != row){
cmp.setBackground(GUI.COLOR_ELEMENT_BACKGROUND_MANDATORY);
cmp.setForeground(GUI.COLOR_ELEMENT_FOREGROUND_ENABLED);
}
}
return cmp;
}
}
}
Code zum entfernen der Zeile:
Code:
((DefaultTableModel)DTable.this.getModel()).removeRow(row);
Hoffe auf Eure Hilfe
Danke, Grüße
Times
Edit: Die Bilder sollten nun auch für euch sichtbar sein :*