jTable CellEditorListener

Status
Nicht offen für weitere Antworten.

hanso

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

Wie kann ich einer Tabelle einen CellEditorListener hinzufügen?
 
so:
Code:
JTable table = ...
table.getCellEditor().addCellEditorListener( ... );

Aber wenn du den Editor wechselst, reagiert der Listener natürlich nicht mehr.
 
Wieso funktioniert das denn nicht?

Code:
table.getCellEditor().addCellEditorListener(new javax.swing.event.CellEditorListener() {
            public void editingStopped(javax.swing.event.CellEditorListener evt) {
                System.out.println("Editing Stopped");
            }
            });
 
weil du das Interface nicht richtig implementierst:
Code:
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
				
			}
		});
		}
 
Code:
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)
 
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
 
Auf der Zeile 1191 steht:
Code:
table.getCellEditor().addCellEditorListener(new CellEditorListener() {

Ich glaube schon fast es ist unmöglich in Java einen CellEditorListener zu verwenden.
 
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!
 
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?
Code:
JTable table = new JTable();
 
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?

Ist die Initialisierung nicht die erstellung dieser Objekte?, diese ist bei table vorhanden. Wird der CellEditor nicht mit der tabelle erstellt?
Code:
JTable table = new JTable();

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

wenn obj == null wird null ausgegeben

und: sicher dass du table vor dem aufruf init. hast?
 
table.getCellEditor(); ist null, was bedeutet dass er nicht initialisiert ist.

Muss man den CellEditor irgendwie einzel initialisieren, wenn ja: wie?
 
hanso hat gesagt.:
Auf der Zeile 1191 steht:
Code:
table.getCellEditor().addCellEditorListener(new CellEditorListener() {

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

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

so sollte es aussehen!!
Code:
table.getCellEditor().addCellEditorListener(new CellEditorListener()) {
 
Peterle hat gesagt.:
hanso hat gesagt.:
Auf der Zeile 1191 steht:
Code:
table.getCellEditor().addCellEditorListener(new CellEditorListener() {

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

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

so sollte es aussehen!!
Code:
table.getCellEditor().addCellEditorListener(new CellEditorListener()) {

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.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben