Discussion:
JTable und Doppelklicks
(zu alt für eine Antwort)
Roland Schwab
2005-05-02 14:39:37 UTC
Permalink
Hallo,
ich habe mit Eclipse eine Jtable in ein Programm eingefügt, ohne ein
Tabellenmodell zu erstellen. Die Tabelle soll eigentlich nur Namen
darstellen, die nicht geändert werden können. Allerdings soll sich durch
einen Doppelklick auf eine Zelle oder die Auswahl einer Zelle und
anschließendes <ENTER> ein neues Fenster öffnen, das die restlichen Daten,
die mit dem Namen verknüpfen, darstellt. Nun das Problem.

Wenn ich einen MouseListener hinzufüge, empfängt der nur einfache Klicks.
Das gilt zumindest, wenn die Zelle editierbar ist. Ein Doppelklick kommt bei
meinem MouseListener nicht an! Auch die <ENTER>-Taste kann ich nicht
abfangen.

Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.

Was kann ich tun?

Grüße
Roland
Michael Rauscher
2005-05-02 14:24:04 UTC
Permalink
Post by Roland Schwab
Hallo,
ich habe mit Eclipse eine Jtable in ein Programm eingefügt, ohne ein
Tabellenmodell zu erstellen. Die Tabelle soll eigentlich nur Namen
darstellen, die nicht geändert werden können. Allerdings soll sich durch
einen Doppelklick auf eine Zelle oder die Auswahl einer Zelle und
anschließendes <ENTER> ein neues Fenster öffnen, das die restlichen Daten,
die mit dem Namen verknüpfen, darstellt. Nun das Problem.
Wenn ich einen MouseListener hinzufüge, empfängt der nur einfache Klicks.
Das gilt zumindest, wenn die Zelle editierbar ist. Ein Doppelklick kommt bei
meinem MouseListener nicht an! Auch die <ENTER>-Taste kann ich nicht
abfangen.
Ja, klingt logisch. Du registriert den MouseListener/ActionListener bei
der JTable.

Ist eine Zelle editierbar, wird bei einem Klick auf diese eine Component
"aktiviert" (s. javax.swing.table.TableCellEditor). Ab diesem Zeitpunkt
dürfte die Komponente für die "Event-Versorgung" zuständig sein.
Post by Roland Schwab
Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.
Was kann ich tun?
Ins Blaue: Schon mal JTable#setCellSelectionEnabled auf true gesetzt?

Gruß
Michael
Roland Schwab
2005-05-03 07:32:10 UTC
Permalink
Post by Michael Rauscher
Post by Roland Schwab
Hallo,
ich habe mit Eclipse eine Jtable in ein Programm eingefügt, ohne ein
Tabellenmodell zu erstellen. Die Tabelle soll eigentlich nur Namen
darstellen, die nicht geändert werden können. Allerdings soll sich durch
einen Doppelklick auf eine Zelle oder die Auswahl einer Zelle und
anschließendes <ENTER> ein neues Fenster öffnen, das die restlichen Daten,
die mit dem Namen verknüpfen, darstellt. Nun das Problem.
Wenn ich einen MouseListener hinzufüge, empfängt der nur einfache Klicks.
Das gilt zumindest, wenn die Zelle editierbar ist. Ein Doppelklick kommt bei
meinem MouseListener nicht an! Auch die <ENTER>-Taste kann ich nicht
abfangen.
Ja, klingt logisch. Du registriert den MouseListener/ActionListener bei
der JTable.
Ist eine Zelle editierbar, wird bei einem Klick auf diese eine Component
"aktiviert" (s. javax.swing.table.TableCellEditor). Ab diesem Zeitpunkt
dürfte die Komponente für die "Event-Versorgung" zuständig sein.
Post by Roland Schwab
Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.
Was kann ich tun?
Ins Blaue: Schon mal JTable#setCellSelectionEnabled auf true gesetzt?
Gruß
Michael
Hallo,
danke für die Antwort.
Wenn ich CellSelection auf enabled setze, tritt das beschriebene Verhalten
auf!
Gruß Roland
Thorsten Hillebrand
2005-05-02 19:21:39 UTC
Permalink
Post by Roland Schwab
Hallo,
ich habe mit Eclipse eine Jtable in ein Programm eingefügt, ohne ein
Tabellenmodell zu erstellen. Die Tabelle soll eigentlich nur Namen
darstellen, die nicht geändert werden können. Allerdings soll sich durch
einen Doppelklick auf eine Zelle oder die Auswahl einer Zelle und
anschließendes <ENTER> ein neues Fenster öffnen, das die restlichen Daten,
die mit dem Namen verknüpfen, darstellt. Nun das Problem.
Wenn ich einen MouseListener hinzufüge, empfängt der nur einfache Klicks.
Das gilt zumindest, wenn die Zelle editierbar ist. Ein Doppelklick kommt bei
meinem MouseListener nicht an! Auch die <ENTER>-Taste kann ich nicht
abfangen.
Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.
Was kann ich tun?
Grüße
Roland
Ich kann es dir jetzt nicht genau sagen, aber du kannst mit ClickCount()
oder so die Anzahl der clicks zählen. Also..
if(table(bzw. listener).clickcount() == 2) ...
Das Enter kannste mir nem KeyEvent abfragen. Wenn der Doppelklick kam,
kannst du ja ne variable auf true setzen oder so und wenn dann innerhalb
von ner bestimmten zeit das Enter kommt, dann zeigst du das neue Fenster
an...
so ganz grob gesagt.

Mfg, Matflasch
Roland Schwab
2005-05-03 08:22:15 UTC
Permalink
Post by Thorsten Hillebrand
Post by Roland Schwab
Hallo,
ich habe mit Eclipse eine Jtable in ein Programm eingefügt, ohne ein
Tabellenmodell zu erstellen. Die Tabelle soll eigentlich nur Namen
darstellen, die nicht geändert werden können. Allerdings soll sich durch
einen Doppelklick auf eine Zelle oder die Auswahl einer Zelle und
anschließendes <ENTER> ein neues Fenster öffnen, das die restlichen Daten,
die mit dem Namen verknüpfen, darstellt. Nun das Problem.
Wenn ich einen MouseListener hinzufüge, empfängt der nur einfache Klicks.
Das gilt zumindest, wenn die Zelle editierbar ist. Ein Doppelklick kommt bei
meinem MouseListener nicht an! Auch die <ENTER>-Taste kann ich nicht
abfangen.
Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.
Was kann ich tun?
Grüße
Roland
Ich kann es dir jetzt nicht genau sagen, aber du kannst mit ClickCount()
oder so die Anzahl der clicks zählen. Also..
if(table(bzw. listener).clickcount() == 2) ...
Das Enter kannste mir nem KeyEvent abfragen. Wenn der Doppelklick kam,
kannst du ja ne variable auf true setzen oder so und wenn dann innerhalb
von ner bestimmten zeit das Enter kommt, dann zeigst du das neue Fenster
an...
so ganz grob gesagt.
Mfg, Matflasch
Hallo,
das mit dem Klickcount habe ich ja gemacht. Das Ergebnis ist immer 1, wenn
die Zellen auf editierbar gesetzt sind sind. Sind die Zellen nicht
editierbar, erhalte ich auch andere Counts, aber die Zelle wird nicht mehr
markiert.
Trotzdem Dank für deine Hilfe.
Gruß Roland
Hauke Ingmar
2005-05-02 21:01:24 UTC
Permalink
Post by Roland Schwab
Wenn ich einen MouseListener hinzufüge, empfängt der nur einfache Klicks.
Das gilt zumindest, wenn die Zelle editierbar ist. Ein Doppelklick kommt bei
meinem MouseListener nicht an! Auch die <ENTER>-Taste kann ich nicht
abfangen.
Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.
Was kann ich tun?
Du mußt einen eigenen CellEditor implementieren, der dann die
entsprechenden Aktionen anstößt. Der kann die Clicks zählen oder auch
ein neues Fenster öffnen.

Bis denn
Andreas Leidig
2005-05-02 21:24:24 UTC
Permalink
Warum willst Du denn die Zelle markieren? Das ist doch absolut unnötig,
wenn Du die Aktion auf die Zeile legst. Da sollte die markierte Zeile
doch reichen (das ist sie doch, oder?)

Gruss,

Andreas
Post by Roland Schwab
Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.
Roland Schwab
2005-05-03 08:23:59 UTC
Permalink
Post by Andreas Leidig
Warum willst Du denn die Zelle markieren? Das ist doch absolut unnötig,
wenn Du die Aktion auf die Zeile legst. Da sollte die markierte Zeile
doch reichen (das ist sie doch, oder?)
Gruss,
Andreas
Post by Roland Schwab
Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.
Hallo Andreas,
der Anwender sollte sehen, welche Zelle er ausgewählt hatte, er ändert ja in
dem erscheinenden Dialog die zugehörigen Werte.

Gruß Roland
Marcel Paggen
2005-05-03 08:32:09 UTC
Permalink
Post by Roland Schwab
Hallo,
ich habe mit Eclipse eine Jtable in ein Programm eingefügt, ohne ein
Tabellenmodell zu erstellen. Die Tabelle soll eigentlich nur Namen
darstellen, die nicht geändert werden können. Allerdings soll sich durch
einen Doppelklick auf eine Zelle oder die Auswahl einer Zelle und
anschließendes <ENTER> ein neues Fenster öffnen, das die restlichen Daten,
die mit dem Namen verknüpfen, darstellt. Nun das Problem.
Wenn ich einen MouseListener hinzufüge, empfängt der nur einfache Klicks.
Das gilt zumindest, wenn die Zelle editierbar ist. Ein Doppelklick kommt bei
meinem MouseListener nicht an! Auch die <ENTER>-Taste kann ich nicht
abfangen.
Wenn ich die Editierbarkeit der Zelle ausschalte, empfange ich zwar
Doppelklicks, aber die Zelle wird nicht mehr markiert.
Was kann ich tun?
Grüße
Roland
Hallo,

versuche doch mal:

table.setColumnSelectionAllowed(true);
und mache die JTable nicht editierbar.

Gruß!
Marcel

java: 1.5.0_01
OS: Windows XP Pr

Loading...