# JTable Listener



## abla (10. Mai 2005)

Gibt es kein Listener der erkennt wann man ins editieren wechselt ?


----------



## elmato (10. Mai 2005)

meinst du sowas wie den CellEditorListener()


----------



## abla (10. Mai 2005)

Ja sowas in der Art nur muss ich reagieren wenn ich in den Editiermodus gehe
und nicht wenn ich ihn verlasse oder abbreche.


----------



## elmato (10. Mai 2005)

ich bin mir nicht ganz sicher aber ich glaube du musst den Celleditor ueberschreiben und die methode selber implementiren
schau mal hier
http://forum.java.sun.com/thread.jspa?threadID=524265&messageID=3034230


----------



## abla (10. Mai 2005)

Danke erst einmal ich denke das muss ich dann wohl tun.
Wieder mehr Arbeit als ich wollte.


----------



## Thomas Darimont (10. Mai 2005)

Hallo!

Schau doch mal hier:

```
/**
 * 
 */
package de.tutorials;

import java.awt.event.MouseEvent;
import java.util.EventObject;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

/**
 * @author Tom
 */
public class JTableNotifyOnEditExample extends JFrame {

	JTable table;

	String[] header = { "A", "B", "C", "D" };

	String[][] rowData = { { "1", "1", "1", "1" }, { "2", "2", "2", "2" },
			{ "3", "3", "3", "3" }, { "4", "4", "4", "4" } };

	public JTableNotifyOnEditExample() {
		super("JTableNotifyOnEditExample");
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		table = new JTable(rowData, header) {
			public boolean editCellAt(int row, int column, EventObject e) {

				if (e == null) {
					System.out.println("edit!");
				}

				if (e instanceof MouseEvent) {
					MouseEvent mouseEvent = (MouseEvent) e;
					if (mouseEvent.getClickCount() > 1) {
						System.out.println("edit!");
					}
				}

				return super.editCellAt(row, column, e);
			}
		};

		add(new JScrollPane(table));
		pack();
		setVisible(true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new JTableNotifyOnEditExample();
	}

}
```

gruß Tom


----------



## Snape (10. Mai 2005)

Mal so aus der Hüfte: Gab es da nicht eine Methode isEditing oder isCellEditing? Ich meine mich dunkel daran erinnern zu können.


----------



## Thomas Darimont (10. Mai 2005)

Hallo!

Überschreibt man die isEditing Methode:

```
table = new JTable(rowData, header) {
			public boolean isEditing() {

				System.out.println("isEditing...");

				return super.isEditing();
			}

		};
```
so wird man ein gaaaaanz klein wenig zu oft informiert, dass die Tabelle editiert wird ;-)

Gruß Tom


----------



## Snape (10. Mai 2005)

Dann muss ich passen. Oder weisst Du noch einen Trick?


----------



## Thomas Darimont (11. Mai 2005)

Hi!

Der hier scheint doch zu funktionieren:
http://www.tutorials.de/forum/showpost.php?p=1057435&postcount=6

Gruß Tom


----------



## abla (11. Mai 2005)

Hallo 

Erst einmal danke für eure bemühungen.

Nur leider muss nicht nur auf die Maus achten.
Man kann ja auch mit F2 oder Ctrl+s in den Editmodus wechsen.

Jetzt habe ich versucht mir meinen Celleditor zu schreiben aber leider stelle ich mich wieder zu Blöd an den auch einzubinden.
Könnt ihr mir dabei noch mal helfen ?


----------



## Thomas Darimont (11. Mai 2005)

Hallo!

Probier das Beispiel doch mal aus... F2 und Strg+S werden auch "korrekt" als Edit - start erkannt

Gruß Tom


----------



## abla (11. Mai 2005)

Also noch einmal DANKE

Ich hätte es ja gleich testen können   :-( 

Also es klappt


----------



## $horty$ (19. Dezember 2008)

Hallo Leute,

ich hab daselbe Problem wie der Threadschreiber.
Nur gibt es ein Problem in Toms Beispiel:

Sollte jemand einfach nur eine Zelle markieren und dann einen Wert eintragen wechselt die JTable ja in den Editmodus was dein Beispiel so nicht mitbekommt.

Gibts da noch ne erweiterte Lösung ?

Gruß Patrick


----------

