Tagwohl
Ich habe es hier mit einer überkomplexen Tabelle zu tun, die auf irgendwelche Weise zusammengebaut wird. Ich kann darin gewisse Zellen anklicken und damit deren Inhalt verändern oder ich kann Text in eine Zelle einfügen oder es geht ein Subfenster auf, wenn ich in die entsprechende Zelle klicke.
Nun ist es meine Aufgabe, die Zellen, die nur zum "Toggeln" angeklickt werden, kurz nach dem Klick zu umrahmen, färben, markieren oder so und darauf gleich wieder auf den alten Zustand bringen. Ich, bzw der Auftrag Gebende möchte das, um zu wissen, was er gerade angeklickt hat.
Für einen Fall funktioniert dies schon wunderbar. Nämlich bei den Zellen, bei denen ein Subfenster auf Klick aufgeht. Da setze ich die Zelle bspw. auf Schwarz, das Subfenster geht auf, ich bearbeite dort dies und das, und wenn ich es schliesse, wird die Zelle wieder in ihre Grundfarbe zurückgesetzt.
So ala:
Auf ähnliche Weise wollte ich es auch bei den "Toggle-Zellen" machen. Ausser, dass ich eben hier kein Subfenster oder dergleichen öffne. Genau aus diesem Grund geht diese Vorgehensweise nicht wirklich, da es viel zu schnell geht, als dass es sichtbar wäre auf dem Schirm. Die Färbung findet wohl statt, aber ich krieg niemals etwas davon mit. Hab mir auch überlegt, einen kurzen wait einzubauen, aber das ist wohl überbeknackt, darum lass ichs ileber sein.
Hat jemand eine Idee, wie ich die kurze Färbung trotzdem hinkriege? Es würde schon so ein Rahmen reichen, der erscheint, wenn ich cell.setEditable mache. Nur möchte ich das Feld nicht editieren können, lediglich die Markierung soll stattfinden.
Hoffe, meine Problematik verständlich rübergebracht zu haben.
Hier noch ein Code-Schnipsel mit der Spalte "R" als Beispiel. Danke für Tipps.
Ich habe es hier mit einer überkomplexen Tabelle zu tun, die auf irgendwelche Weise zusammengebaut wird. Ich kann darin gewisse Zellen anklicken und damit deren Inhalt verändern oder ich kann Text in eine Zelle einfügen oder es geht ein Subfenster auf, wenn ich in die entsprechende Zelle klicke.
Nun ist es meine Aufgabe, die Zellen, die nur zum "Toggeln" angeklickt werden, kurz nach dem Klick zu umrahmen, färben, markieren oder so und darauf gleich wieder auf den alten Zustand bringen. Ich, bzw der Auftrag Gebende möchte das, um zu wissen, was er gerade angeklickt hat.
Für einen Fall funktioniert dies schon wunderbar. Nämlich bei den Zellen, bei denen ein Subfenster auf Klick aufgeht. Da setze ich die Zelle bspw. auf Schwarz, das Subfenster geht auf, ich bearbeite dort dies und das, und wenn ich es schliesse, wird die Zelle wieder in ihre Grundfarbe zurückgesetzt.
So ala:
Code:
cell.setBackground(Color.BLACK);
modalinternalframe.setVisible(true);
cell.setBackground(bg);
Auf ähnliche Weise wollte ich es auch bei den "Toggle-Zellen" machen. Ausser, dass ich eben hier kein Subfenster oder dergleichen öffne. Genau aus diesem Grund geht diese Vorgehensweise nicht wirklich, da es viel zu schnell geht, als dass es sichtbar wäre auf dem Schirm. Die Färbung findet wohl statt, aber ich krieg niemals etwas davon mit. Hab mir auch überlegt, einen kurzen wait einzubauen, aber das ist wohl überbeknackt, darum lass ichs ileber sein.
Hat jemand eine Idee, wie ich die kurze Färbung trotzdem hinkriege? Es würde schon so ein Rahmen reichen, der erscheint, wenn ich cell.setEditable mache. Nur möchte ich das Feld nicht editieren können, lediglich die Markierung soll stattfinden.
Hoffe, meine Problematik verständlich rübergebracht zu haben.
Hier noch ein Code-Schnipsel mit der Spalte "R" als Beispiel. Danke für Tipps.
Code:
dm.setClickListener(new TableClickListener() {
public void clicked(JTable table, TableCell cell, int row, int column) {
String identifier = cell.getIdentifier();
boolean hasAction = true;
// the other values
String r = nullIfEmpty((String) ((TableCell) table.
getValueAt(row, 0)).getValue());
String i = nullIfEmpty((String) ((TableCell) table.
getValueAt(row, 1)).getValue());
String n = nullIfEmpty((String) ((TableCell) table.
getValueAt(row, 2)).getValue());
String a = nullIfEmpty((String) ((TableCell) table.
getValueAt(row, 3)).getValue());
String f = nullIfEmpty((String) ((TableCell) table.
getValueAt(row, 4)).getValue());
TableCell codeCell = (TableCell) table.getValueAt(row, 5);
String code = nullIfEmpty((String) codeCell.getValue());
int methtypnr = (Integer) codeCell.
getAdditionalRowValue(ROWVAL_METHODETYPNR);
String meth2 = nullIfEmpty((String) codeCell.
getAdditionalRowValue(ROWVAL_METHODENR2));
String keim = nullIfEmpty((String) ((TableCell) table.
getValueAt(row, 10)).getValue());
Color bg = cell.getBackground();
if (identifier.equals(TABLE_R)) {
/* ************
* RRR
* R R
* RRR
* R R
* R R
************ */
// just ignore clicks on 'r'
if (hasAction) {
cell.setBackground(Color.BLACK);
//nachkontrMif.setVisible(true);
cell.setBackground(bg);
}
}.....etc...