Ich habe mach mein ein neues Thema auf, das alte passt nicht mehr unbedingt und es ist inzwischen ziemlich lang.
Hier der Link zum anderen Thema: https://www.java-forum.org/thema/2-combobox-en.184473/page-11
Ich habe aktuell folgendes Problem: Das Editieren der Datenbank funktioniert vom Prinzp eigentlich schon, jedoch hatte ich letztens immer NullPointerExceptions. Ich habe jetzt sozusagen den Übeltäter gefunde und es müsste etwas mit meinem Listener bzw. mit meinm fireEvet etc. zu tun haben. Wenn ich nämlich diesen auskommentiere kommt keine NPS, jedoch wird nach drücken des Buttons dann auch nicht die jTable aktualisiert.
Mein JFrame ist jetzt aufgeteilt in mehrere jPanels und ich habe dazu eine Repository sowie ModelClass:
Code in BranchModel:
Code in BranchRepository:
Code in PanelBranch:
Code in RepositoryEvent:
Code RepositoryListener:
Hier der Link zum anderen Thema: https://www.java-forum.org/thema/2-combobox-en.184473/page-11
Ich habe aktuell folgendes Problem: Das Editieren der Datenbank funktioniert vom Prinzp eigentlich schon, jedoch hatte ich letztens immer NullPointerExceptions. Ich habe jetzt sozusagen den Übeltäter gefunde und es müsste etwas mit meinem Listener bzw. mit meinm fireEvet etc. zu tun haben. Wenn ich nämlich diesen auskommentiere kommt keine NPS, jedoch wird nach drücken des Buttons dann auch nicht die jTable aktualisiert.
Mein JFrame ist jetzt aufgeteilt in mehrere jPanels und ich habe dazu eine Repository sowie ModelClass:
Code in BranchModel:
Java:
public void update(Branch branch) {
try {
branches.updateBranch(branch);
int ix = data.indexOf(branch);
fireContentsChanged(ix,ix);
fireTableRowsUpdated(ix, ix);
} catch(SQLException ex) {
ex.printStackTrace();
}
}
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 in BranchRepository:
Java:
//...
fireUpdated(branch);
//...
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 in PanelBranch:
Java:
//...
private void update(Branch branch) {
//...
branchModel.update(current);
//...
}
//...
Code in RepositoryEvent:
Java:
public class RepositoryEvent<T> {
public enum Type {
ADDED, REMOVED, UPDATED
};
private final T value;
private final Type type;
public RepositoryEvent(Type type, T value) {
this.type = type;
this.value = value;
}
public Type getType() {
return type;
}
public T getValue() {
return vaule;
}
}
Code RepositoryListener:
Java:
public interface RepositoryListener<T> {
void eventOccured(RepositoryEvent<T> event>;
}