addition / subtraktion auf var

xeal

Mitglied
Hallo Java Gemeinde,

ich habe diesmal ein komisches Problem wie ich finde. Versuche über eine Methode einen Counter hoch und runter zu setzen, jedoch scheint es so als ob zwei verschiedene Varaiblen angesprochen werden. Kann mir einer eine Tipp geben, stehe irgendwie auf dem Schlauch.

hier die Methode

Code:
public class test{

private int count = 0;

	public void setCount(int wert,String vorzeichen)
	{
		
		if (vorzeichen.equals("+"))
		{
			count = count + wert;

		}else if(vorzeichen.equals("-"))
		{
			count = count - wert;
		}
	}
}


Danke schon mal für eure Hilfe.
 
Versuche über eine Methode einen Counter hoch und runter zu setzen, jedoch scheint es so als ob zwei verschiedene Varaiblen angesprochen werden.

Soll ein counter für alle test Objekte existieren. Oder je test Objekt einer?
Wenn das erstere zutrifft musst du deinen counter als static deklarieren.

Gruß

RedWing
 
Hi,

ich weiss nicht was bei dir der Fehler ist, bei mir laeuft es.

Code:
public class Klasse01 extends JFrame {
    
    public static void main(String[] args) {
        Klasse01 k = new Klasse01();
        k.setCount(2,"+");
        k.setCount(1,"-");
        System.out.println(k.getCount());
    }
    
    private int count = 0;

    public void setCount(int wert,String vorzeichen)
    {
        
        if (vorzeichen.equals("+"))
        {
            count = count + wert;

        }else if(vorzeichen.equals("-"))
        {
            count = count - wert;
        }
    }
    
    public int getCount() {
        return count;
    }
}
 
Danke für eure Hilfe. Habs auch nochmal getestet und Funkioniert. Dann muss mein Problem wohl wo anders sein.

Also ich setze das ganze in einem ActionListener ein. Wenn auf einen Butten gedrückt wird, soll die Methode aufgerufen werden und counter geändert werden.

Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyListener implements ActionListener{

	private int count = 0;
	Data data;
	
	public void actionPerformed(ActionEvent arg0) {
				
		String com = arg0.getActionCommand();
		
		
		if(com.equals("<"))
		{
			setCount(13,"-");
 			System.out.println(getCount());
		
		}else if(com.equals(">"))
		{
			setCount(13,"+");
			System.out.println(getCount());
	 
		}
	}
	
	public int getCount(){
		return count;
	}
	
	public void setCount(int wert,String vorzeichen){
		
		if (vorzeichen.equals("+"))
		{
			this.count = this.count + wert;
		}else if(vorzeichen.equals("-"))
		{
			this.count = this.count - wert;
		}
	}
}

Irgendwie wird dann nicht mit der selben var gerechnet...
 
Also an deinem Listner liegt es wohl nicht, denn den haben wir ja jetzt erfolgreich getestet ;)

Vllt. ein wengi code, wo du ihn verwendest.

*Edit Ok war zu vorreilig, aber dieser funktioniert einwandfrei.

Hier mal mein main

public static void main(String[] args) {
MyListener myListener = new MyListener();
myListener.actionPerformed(new ActionEvent(new Object(),0,"<",0));
myListener.actionPerformed(new ActionEvent(new Object(),0,">",0));
}

Ausgabe: 0
:D
 
Zuletzt bearbeitet:
Hier meine Buttons

Code:
 	private JButton getButVor(){
 		butVor = new JButton();
 		butVor.setText(">");
 		butVor.addActionListener(new MyListener());
 		return butVor;
 	}
 	
 	private JButton getButZurueck(){
 		
 		butZurueck = new JButton();
 		butZurueck.setText("<");
 		butZurueck.addActionListener(new MyListener());
 		return butZurueck;
 	}

Diese werden dann meinem Frame im TableLayout platziert

Code:
 		frame = new JFrame();
 		frame.getContentPane();
 		frame.setSize(600,500);
 		
 		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 		frame.setLayout(new TableLayout(size));
 		frame.add(getButLaden(),"2,30,11,2");
 		frame.add(getButEnde(),"26,36,30,2");

Mehr passiert so eigentlich nicht.

Muss ich mir bei Swing irgendwie aktuelle Referenzen zurückgeben lassen? Wenn ja wie? Weiß sonst nicht wo der Fehler ist :-(
 
OK Fehler geufnden.
Du weisst beiden Buttons ein neues Object hinzu...

Entweder du erzeugst ein Attribut von deinen Listener und weisst dieses zu, was ich sinvoller finde. Oder du machst das attribut statisch, dafuer kannst du den Listener nur einmal verwenden (ist nicht gerade OOP freundlich) :D
 
Kannste mir ein Beipsiel geben wie ich ein Attribut erzeugen soll für meinen Listener?

** edit **

Ok habs hinbekommen

Instanz erzeugen

Code:
MyListener navigation = new MyListener();

Zuweisen der Instanz des ActionListener

Code:
butZurueck.addActionListener(navigation);

Vielen Dank für deine schnelle Hilfe
 
Zuletzt bearbeitet:
OK habe mich wohl sehr schlecht ausgedrueckt. Lege zum Beispiel ein Objectattribut an.

private MyListener myListener;

und initialisiert du das im Konstruktor

myListener = new MyListener;

und adden

ind den Methoden getButVor() und getButZurueck

button.addActionListener(myListener);

anstatt

button.addActionListener(new MyListener());
 
Zurück