# jTable CellEditorListener



## hanso (21. Mai 2004)

```
table.addListSelectionListener(new CellEditorListener() {
        public void valueChanged(CellEditorListener event) {
                System.out.println("Editing stopped");
            }
    });
```

Wie kann ich einer Tabelle einen CellEditorListener hinzufügen?


----------



## Beni (21. Mai 2004)

so:

```
JTable table = ...
table.getCellEditor().addCellEditorListener( ... );
```

Aber wenn du den Editor wechselst, reagiert der Listener natürlich nicht mehr.


----------



## hanso (25. Mai 2004)

Wieso funktioniert das denn nicht?


```
table.getCellEditor().addCellEditorListener(new javax.swing.event.CellEditorListener() {
            public void editingStopped(javax.swing.event.CellEditorListener evt) {
                System.out.println("Editing Stopped");
            }
            });
```


----------



## bygones (25. Mai 2004)

weil du das Interface nicht richtig implementierst:

```
table.getCellEditor().addCellEditorListener(new CellEditorListener() {

			public void editingCanceled(ChangeEvent e) {
				// TODO Auto-generated method stub
				
			}

			public void editingStopped(ChangeEvent e) {
				// TODO Auto-generated method stub
				
			}
		});
		}
```


----------



## hanso (25. Mai 2004)

```
table.getCellEditor().addCellEditorListener(new CellEditorListener() {
                
                 public void editingCanceled(ChangeEvent evt) {
                    // TODO Auto-generated method stub 
                     System.out.println("Editing Canceled");
                     
                 }
                 
                 public void editingStopped(ChangeEvent evt) {
                    // TODO Auto-generated method stub 
                     System.out.println("Editing Stopped");
                     
                 }
                 
              });
```
Dieser Code löst bei mir folgende Fehlermeldung aus, aber erst nach dem kompilieren wenn ich ihn laufen lasse:



java.lang.NullPointerException
        at pulververwaltung.suchePulverPanel$Table.addTable(suchePulverPanel.java:1191)
        at pulververwaltung.suchePulverPanel.AllePulverAnzeigenActionPerformed(suchePulverPanel.java:577)
        at pulververwaltung.suchePulverPanel.access$1000(suchePulverPanel.java:29)
        at pulververwaltung.suchePulverPanel$11.actionPerformed(suchePulverPanel.java:389)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1767)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1820)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:258)
        at java.awt.Component.processMouseEvent(Component.java:5021)
        at java.awt.Component.processEvent(Component.java:4818)
        at java.awt.Container.processEvent(Container.java:1380)
        at java.awt.Component.dispatchEventImpl(Component.java:3526)
        at java.awt.Container.dispatchEventImpl(Container.java:1437)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3214)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2929)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2859)
        at java.awt.Container.dispatchEventImpl(Container.java:1423)
        at java.awt.Window.dispatchEventImpl(Window.java:1566)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)


----------



## bygones (25. Mai 2004)

tsja, dann schau mal in die Zeile 1191 von suchePulverPanel.java und schau was für Variablen da verwendet werden, eine davon ist nicht initialisiert....

BTW: eine java mit 1191 zeilen ist schon a weng krass .... vielleicht solltest du überlegen das ganze besser zu unterteilen


----------



## hanso (26. Mai 2004)

Auf der Zeile 1191 steht:
	
	
	
	





```
table.getCellEditor().addCellEditorListener(new CellEditorListener() {
```

Ich glaube schon fast es ist unmöglich in Java einen CellEditorListener zu verwenden.


----------



## Beni (26. Mai 2004)

Betrachte mal, welche Variablen hier "null" sein können.

Alles mit "new" scheidet schon mal aus, weil ein Konstruktor entweder ein neues Objekt herstellt, oder gleich eine Exception wirft (dann wäre aber der StackTrace anders).

Also bleiben nur noch "table" und "table.getCellEditor". Probier aus, welcher null ist!


----------



## hanso (26. Mai 2004)

Danke für eure Antworten!

Ich weiss leider nicht wie ich prüfen kann ob "table" oder "table.getCellEditor" NULL ist. 

Und wen eine der beiden NULL sein sollte, was kann ich dann dagegen machen?

Ist die Initialisierung nicht die erstellung dieser Objekte?, diese ist bei table vorhanden. Wird der CellEditor nicht mit der tabelle erstellt?
	
	
	
	





```
JTable table = new JTable();
```


----------



## Roar (26. Mai 2004)

hanso hat gesagt.:
			
		

> Ich weiss leider nicht wie ich prüfen kann ob "table" oder "table.getCellEditor" NULL ist.
> 
> Und wen eine der beiden NULL sein sollte, was kann ich dann dagegen machen?
> 
> ...



System.out.println("obj: "+obj);

wenn obj == null wird null ausgegeben

und: sicher dass du table vor dem aufruf init. hast?


----------



## hanso (28. Mai 2004)

table.getCellEditor(); ist null, was bedeutet dass er nicht initialisiert ist. 

Muss man den CellEditor irgendwie einzel initialisieren, wenn ja: wie?


----------



## Peterle (1. Jun 2004)

hanso hat gesagt.:
			
		

> Auf der Zeile 1191 steht:
> 
> 
> 
> ...



schau mal genau hin! dir fehlt nach new CellEditorListener() eine ")" !!

so sollte es aussehen!!

```
table.getCellEditor().addCellEditorListener(new CellEditorListener()) {
```


----------



## Roar (1. Jun 2004)

Peterle hat gesagt.:
			
		

> hanso hat gesagt.:
> 
> 
> 
> ...



nein sollte es ganz bestimmt nicht, denn das solle wohl eine anonyme klasse werden. wozu sonst die gewschweifte klammer? außerdem ist CellEditorListener ein interface und das kann man gar nicht instantiieren.


----------

