MVC Listener Frage

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi, ich bin gerade dabei eine größere Anwendung zu bauen, hab aber gerad ein glaube ich banales Problem, hinter das
ich nicht steige:

Ich benutze das MVC Pattern und erzeuge im Model ein Set<Interface>

Code:
...
...
private Set<Interface> listeners;
...
..
...

Interface:
Code:
package GUI;
import java.util.EventListener;
public interface Interface extends EventListener{
    public void setCalender(int start, int end, int kalwoche);
}


Zuden habe ich im Model noch folgende Methoden
Code:
public void informListeners(int jahr, int monat, int kalwoche){

        System.out.println(listeners.size());    // --> Testweise, gibt immer 0 aus

        for(Interface o : this.listeners){
            o.setCalender(jahr, monat, kalwoche);
        }
    }
    
    public void addListener(Interface t){
       listeners.add(t);
    }

Im Controller stehen folgende Methoden um Listener hinzuzufügen
Code:
....

public void addListenerToModel(Interface l){
         kalender.addListener(l);     //kalender ist ein Modelobjekt
    }
....


Das GUI implementet das Interface und benutzt im Standartkonstruktor die addListenerToModel methode aus Controller
Code:
public class GUI extends javax.swing.JFrame implements Interface {
    terminprojekt.Controller cont;

    public GUI(terminprojekt.Controller c) {
        cont = c;
        [color=red]cont.addListenerToModel(this);[/color]
        this.setVisible(true);
        initComponents();
       
    }

Jetzt habe ich das Problem das im Set im Model kein einziges Interface hinzugefügt wird, trotz dessen ich dies im GUI getan habe.

Kann mir jemand helfen? Hab das Gefühl es ist ein Schusselfehler, da ich das in etlichen kleineren Programmen schon verwendet habe...


Danke
 
G

Guest

Gast
Ach ja das Set ist im Standartkonstr. initialisiert, hab ich vergessen zu posten
Code:
public Calender(Jahr j){
       ....
....
....

        listeners = new HashSet<Interface>();
....
....
    }
[/code]
 
S

SlaterB

Gast
dein Code ist nichtssagend,
ich kann problemlos ein Beispiel konstruieren, welches 1 ausgibt,
und keiner ist schlauer als zuvor:

Code:
public class Test
{

    public static void main(String[] args)
    {
        new GUI(new Controller());
    }
}


class GUI
    extends javax.swing.JFrame
    implements Interface
{
    Controller cont;

    public GUI(Controller c)
    {
        cont = c;
        cont.addListenerToModel(this);
        this.setVisible(true);
        initComponents();

        cont.kalender.informListeners(3, 3, 4);
    }

    private void initComponents()
    {
    }

    public void setCalender(int start, int end, int kalwoche)
    {
    }
}


class Controller
{
    Calender kalender = new Calender(new Jahr());

    public void addListenerToModel(Interface l)
    {
        kalender.addListener(l); // kalender ist ein Modelobjekt
    }
}


class Jahr
{

}


class Calender
{
    Set<Interface> listeners;

    public Calender(Jahr j)
    {
        listeners = new HashSet<Interface>();
    }

    public void informListeners(int jahr, int monat, int kalwoche)
    {

        System.out.println(listeners.size()); // gibt 1 aus

        for (Interface o : this.listeners)
        {
            o.setCalender(jahr, monat, kalwoche);
        }
    }

    public void addListener(Interface t)
    {
        listeners.add(t);
    }
}


interface Interface
    extends EventListener
{
    public void setCalender(int start, int end, int kalwoche);
}


vermuteter Fehler bei dir: du hast irgendwo zwei JFrames, zwei Controller oder ähnliches,
und untersuchst falsche Dinge
 
G

Guest

Gast
daran geht etwas nicht

cont.kalender.informListeners(3, 3, 4); da das gegen MVC verstöst, aber mein Problem ist halt, wenn ich die Listeners informieren möchte in meinem GUI etwas auszugeben bzw zu änder passiert nix, weil keine listeners im Set sind, obwohl ich sie geadded habe. Und ich habe nur 1 controller und 1 frame.


Code:
 * Created on 24. September 2008, 14:47
 */

package GUI;


import java.io.File;
import javax.swing.JFileChooser;

/**
 *
 * @author  Disrupt3D
 */
public class GUI extends javax.swing.JFrame implements Interface {
    terminprojekt.Controller cont;

    public GUI(terminprojekt.Controller c) {
        cont = c;
        cont.addListenerToModel(this);     <--- Sollte ein Interface im Model zum Set hinzufügen
        this.setVisible(true);
        initComponents();
       
    }


Methode im Controller
Code:
    public void addListenerToModel(Interface l){
         kalender.addListener(l);   --> kalender ist Modelobjekt
    }

Methode im Model

Code:
    public void addListener(Interface t){
       listeners.add(t);
    }
--> added ein Interface zum
ashSet<Interface> listeners



Wenn ich jetzt aber listeners.size() ausführe kommt 0 dabei raus, sodass ich nicht das GUI ansprechen kann.
Vllt is das ein bisschen besser ausgedrückt von mir. Bin mir sicher, dass ich nur 1 controller und 1 frame habe.
 
S

SlaterB

Gast
> Vllt is das ein bisschen besser ausgedrückt von mir.

das war vorher schon sehr klar, deshalb habe ich ein Beispiel gebaut, welches 1 ausgibt,

> Bin mir sicher, dass ich nur 1 controller und 1 frame habe.

es können auch noch zig andere Fehler sein, die ich hier nicht alle aufschreiben/ gar nicht spontan erinnern kann,

wie auch immer, mein Beispiel beweist, dass im bisherigen Code kein Fehler existiert,
es geht nur mit mehr Code voran,
poste idealerweise ein lauffähiges Programm (so wie ich) mit Ausgabe 0
oder mit Anleitung, welchen Button man drücken muss bis Ausgabe 0

-------

noch ein Tipp:
füge Ausgaben ein ala

beim Einfügen
System.out.println("adde Listener, ich bin: "+hashCode()+", size nun: "+size);

später dann
System.out.println("inform irgendwen, ich bin: "+hashCode()+", size: "+size);
 
G

Guest

Gast
Bevor ich versuch ein luauffähiges Prog da rauszuschnipseln, hast du vllt schlechte erfahrungen mit MVC und Netbeans GUI Builder den ich verwenden hab? Habs gefühl das liegt daran, da es mit per hand geschreibenen GUIs funktioniert
 
S

SlaterB

Gast
ich persönlich kann dazu nix sagen, ich vermeide solche schlechten Erfahrungen ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
0x7F800000 Allg. Frage zum ev. dispatch thread, wie korrekt auf reaktion der Listener warten? AWT, Swing, JavaFX & SWT 4
T Frage zu Listener für JTable AWT, Swing, JavaFX & SWT 19
padde479 MenuItem MouseEvent/-Listener AWT, Swing, JavaFX & SWT 5
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
M List Listener AWT, Swing, JavaFX & SWT 37
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
U Funktionsweise Listener AWT, Swing, JavaFX & SWT 1
L TextField Listener AWT, Swing, JavaFX & SWT 13
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M JButton - Listener AWT, Swing, JavaFX & SWT 1
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
M Key Listener reagiert nicht AWT, Swing, JavaFX & SWT 4
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
llabusch Event Handling Listener spielt verrückt AWT, Swing, JavaFX & SWT 8
kaoZ Swing Architektonisches Problem / Listener / MVC AWT, Swing, JavaFX & SWT 14
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
A Listener für JGTextField AWT, Swing, JavaFX & SWT 2
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
B JTable Renderer / Listener AWT, Swing, JavaFX & SWT 7
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
E Listener AWT, Swing, JavaFX & SWT 3
M SWING Listener ohne Wirkung AWT, Swing, JavaFX & SWT 2
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
J Swing dragging listener AWT, Swing, JavaFX & SWT 5
H Problem mit dem Action listener.... AWT, Swing, JavaFX & SWT 2
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
M Fenster schließen - Listener AWT, Swing, JavaFX & SWT 5
G SWT TreeViewer - drop listener austauschen AWT, Swing, JavaFX & SWT 2
S Action Listener in innerer Klasse ausführen. AWT, Swing, JavaFX & SWT 8
J Sinn eines Selection Listener AWT, Swing, JavaFX & SWT 5
M JList mit DefaultListModel und listener AWT, Swing, JavaFX & SWT 4
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
A Swing Suche Listener für beliebige Änderung an GUI Items/Controls AWT, Swing, JavaFX & SWT 8
T SWT: Listener auf einem Button reagiert nicht AWT, Swing, JavaFX & SWT 2
L Swing JTextField Content-Listener AWT, Swing, JavaFX & SWT 4
P AWT Wie kann mein listener den Inhalt eines anderen Textfelds ändern? AWT, Swing, JavaFX & SWT 10
M Ansätze zur Kombination mehrerer Listener für Interaktion AWT, Swing, JavaFX & SWT 19
C JLabel Listener auf Textänderung? AWT, Swing, JavaFX & SWT 5
M Mouse Wheel Listener reagiert mehrmals AWT, Swing, JavaFX & SWT 5
F SWT Button listener richtig erstellen AWT, Swing, JavaFX & SWT 2
El_Lobo Swing Problem bei Methodenaufruf in innerer Klasse bei Listener AWT, Swing, JavaFX & SWT 3
S Wem füge ich welchen Listener hinzu? AWT, Swing, JavaFX & SWT 4
R Durch Listener lässt sich Programm nicht mehr ausführen AWT, Swing, JavaFX & SWT 4
T Callback vs. Event listener AWT, Swing, JavaFX & SWT 7
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
E JComboBox Listener AWT, Swing, JavaFX & SWT 2
AyKay SWT (alle) Listener bzw. ModifyEventListener entfernen AWT, Swing, JavaFX & SWT 2
S jTextField Listener AWT, Swing, JavaFX & SWT 7
E Listener, werte in andere Klasse übernehmen AWT, Swing, JavaFX & SWT 11
L Action listener in bestimmter spalte AWT, Swing, JavaFX & SWT 2
J AWT Action Listener etc. AWT, Swing, JavaFX & SWT 7
xehpuk Swing Listener für JPopupMenu AWT, Swing, JavaFX & SWT 3
F JCalendar mouseclick listener AWT, Swing, JavaFX & SWT 2
W AWT Listener bei TrayIcon AWT, Swing, JavaFX & SWT 2
K Swing Listener bei JPopupMenu AWT, Swing, JavaFX & SWT 9
E Swing JTextField Listener nach Update?! AWT, Swing, JavaFX & SWT 2
T TransformGroup Listener AWT, Swing, JavaFX & SWT 8
O Swing JTable Listener AWT, Swing, JavaFX & SWT 2
O Collection Listener AWT, Swing, JavaFX & SWT 6
L AWT Paint(g) im Listener aufrufen AWT, Swing, JavaFX & SWT 2
G JTree - Observer oder Listener? AWT, Swing, JavaFX & SWT 6
Avalarion SWT Listener auf Label oder Text Teile AWT, Swing, JavaFX & SWT 10
C Ermitteln ob JComponent einen Listener besitzt AWT, Swing, JavaFX & SWT 2
L JTextfield Listener AWT, Swing, JavaFX & SWT 3
C Listener Probleme AWT, Swing, JavaFX & SWT 6
N Listener für Variable AWT, Swing, JavaFX & SWT 4
C Swing Listener für TabPanel AWT, Swing, JavaFX & SWT 8
B Line aus Listener? AWT, Swing, JavaFX & SWT 11
G Model,Listener und background jobs AWT, Swing, JavaFX & SWT 4
1 JList - clearSelection nicht berücksichtigen im Listener AWT, Swing, JavaFX & SWT 7
I Swing Listener auf JPanel AWT, Swing, JavaFX & SWT 9
Dit_ MutableComboBoxModel | Listener fehlt ? AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben