Taschenrechnerprogrammierung

S

SlaterB

Gast
ein Oberflaeche-Objekt A erstellt sich ein anordnung-Objekt B,
-> ein anordnung-Objekt B erstellt sich ein Oberflaeche-Objekt C,
-> ein Oberflaeche-Objekt C erstellt sich ein anordnung-Objekt D,
-> ein anordnung-Objekt D erstellt sich ein Oberflaeche-Objekt E,
...

du siehst nun warum es zum Fehler kommt?
 
S

SlaterB

Gast
A könnte sich selbst an B übergeben
new anordnungen(this)

dann kann sich B das A merken statt C zu erzeugen


oder jemand anders erzeugt beide, z.B. main-Methode

A a = new A();
B b = new B();
a.setB(b);
b.setA(a);
 

Vik08090809

Mitglied
ok danke. Also wie müsste das dann heißen?...Oberflaeche o = new Oberflaeche(), anordnungen an = new anordnungen(), Oberflaeche.setB(an), an.setA(o) ?
 
S

SlaterB

Gast
Oberflaeche.setB(an)
ist falsch, das entspräche ja
A.setB(b);
ich schrieb aber
a.setB(b); ;)

die Methoden kann man dann noch schöner benennen und müssen natürlich in den Klassen existieren und auch was sinnvolles machen, z.B. ein Klassenattribut setzen
 

Vik08090809

Mitglied
wieso geschieht bei diesem Code keine Ausgabe von "0" auf das Textfeld J1?

Java:
public void mouseClicked(MouseEvent e) {
         a.jb_null.addMouseListener(new java.awt.event.MouseAdapter()
        {
            public void MousePressed(java.awt.event.MouseEvent evt)
            {
                a.J1.setText("0");

            }

        });
    }

Danke
 
S

SlaterB

Gast
weil du eine beliebige neue Methode MousePressed() definierst, aber keine des Interfaces MouseListener

eine einfache Regel hilft bereits: alle Klassen groß, alle Methoden klein schreiben
 

Shulyn

Bekanntes Mitglied
Ich glaube du bist da etwas durcheinander gekommen.
Java:
JComponente.addMouseListener(new MouseListener() {
	
	    public void mouseReleased(MouseEvent e) {}
	    public void mousePressed(MouseEvent e) {}
	    public void mouseExited(MouseEvent e) {}
	    public void mouseEntered(MouseEvent e) {}
	
	    public void mouseClicked(MouseEvent e) {
		//mach was
		}
	    
	});

Du hast in der Methode noch eine Methode erstellt oder so ???:L

//Mist zu langsam
 
Zuletzt bearbeitet:

Vik08090809

Mitglied
ok also so?

Java:
   public void mousePressed(MouseEvent e) {
         a.jb_null.addMouseListener(new java.awt.event.MouseAdapter()
         {
            @Override
             public void mousePressed(MouseEvent e)
             {
                  a.J1.setText("0");
             }


         });

    }
 
S

SlaterB

Gast
ausprobieren?

dass bei jedem Mausklick einer Komponente ein neuer MouseListener hingefügt wird,
klingt übrigens nicht so gut, bald könnten da 10 oder 100 sein,
die alle dasselbe machen, dann merkst du das nichtmal, ist nur langsamer
 

Vik08090809

Mitglied
ok thx für diesn Hinweis. Wie kann ich den Mouselistener generell verfügbar machen? Der code funktioniert nicht? :-( es passiert einfach nichts. An was könnte es liegen?
 
S

SlaterB

Gast
üblicherweise fügt man Listener genau dort hinzu, wo die Buttons oder sonstigen Komponenten auch definiert werden, z.B. im Konstruktor

jb_null = new JButton("Test");
jb_null.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
J1.setText("0");
}
});

Ursachen für Fehlverhalten gibt es tausende,
die wichtigste: kein vollständiges Testprogramm gepostet
 

Vik08090809

Mitglied
ok thx. Es funktioniert. Ich habe es jetzt im Konstruktor stehen. Aber deklariert wird der Button bereits davor, da ich es noch nicht geschafft hab, von anderen Klassen auf dieses Objekt(welches im Konstruktor definiert ist) zuzugreifen. Geht das überhaupt? Wenn ja wie?
 
S

SlaterB

Gast
auf lokale Variablen eines Konstruktors kann niemand anders zugreifen,
auf Klassenattribute direkt oder per getter
 
S

SlaterB

Gast

Vik08090809

Mitglied
ok danke..die Java Programmining Tutorials sind ja echt klasse. Ich muss also dem Konstruktor die JButtons übergeben oder. Was trag ich dann aber in die Mainmethode ein? Weil ich muss ja ein Wert übergeben und jButton hat ja kein wert
 
S

SlaterB

Gast
> Ich muss also dem Konstruktor die JButtons übergeben oder.

von 'wie funktionieren getter + setter?' kann ich dir hierhin nicht folgen

> Weil ich muss ja ein Wert übergeben und jButton hat ja kein wert

vielleicht ein neues JButton-Objekt, new JButton()
 
Zuletzt bearbeitet von einem Moderator:

Vik08090809

Mitglied
ok also iwie komm ich nicht ganz damit zurecht. Ich schaffe es zwar, den Keylistener in eine andere Klasse "actionperformances" anzulegen aber das ohne, dass beim Textfeld ein Wert angezeigt wird. Bitte helft mir
 
S

SlaterB

Gast
wie denn, du sagst nur 'irgendwas geht nicht', und dann soll wer anders sagen 'in Zeile 453 muss xy korrigiert werden'?
 

Oben