Auf Thema antworten

hab den Fehler endlich gefunden. Es liegt dan den fireEvents bzw. den Listener. Habe die entsprechenden Zeilen mal auskommentiert und die NPE kam nicht mehr.


BranchModel.java, update Methode:

[CODE=java]int ix = data.indexOf(branch);

fireContentsChanged(ix, ix);

fireTableRowsUpdated(ix, ix);[/CODE]


[CODE=java]    protected void fireContentsChanged(int index0, int index1){

        ListDataEvent event = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, index0, index1);

        for (ListDataListener l : listeners.getListeners(ListDataListener.class)) {

            l.contentsChanged(event);

        }

    } [/CODE]


BranchRepository, updateBranch Methode:

[CODE=java]fireUpdated(branch);[/CODE]


[CODE=java]    private void fireUpdated(Branch branch) {

        fireEvent(new RepositoryEvent<>(RepositoryEvent.Type.UPDATED, branch));

    }

  

    private void fireEvent(RepositoryEvent<Branch> event) {

        Iterator<WeakReference<RepositoryListener<Branch>>> it = listeners.iterator();

        while (it.hasNext()) {

            WeakReference<RepositoryListener<Branch>> ref = it.next();

            RepositoryListener<Branch> listener = ref.get();

            if (listener != null) {

                listener.eventOccured(event);         

            } else {

                it.remove();

            }

        }

    }[/CODE]


Ist da was falsch/fehlt da was vielleicht?


Ich habe auch noch kein Element zugewiesen, wo die Information angezeigt wird. Ich verstehe auch noch nicht, was da genau angezeigt wird. Und du hattest in einem früheren Kommentar geschrieben, dass in meinen update/add/delte Methode mein TableModel eigentlich automatisch aktualisiert wird. Das habe ich auch noch nicht verstanden, wie das funktionert.



Oben