GetActionCommand

m.s

Mitglied
Hallo,
also ich bin dabei ein Zahlencode zu machen, man gibt eine vier-stellige Zahl ein und das Programm sagt dann ob die Zahl richtig oder falsch ist. Ich denke das kennt jeder ;)
Ich bin jetzt schon sehr weit aber ich stecke an einem Punkt fest. Ich möchte bei
Java:
String input = e.getActionCommand();
nicht nur eine Zahl speichern sondern mehrere. Weil ich kann wenn ich z.B "1" drücke, nur die 1 drin speichern, wenn ich aber die 2 drücke, dann wird in dem String input "2" gespeichert, ich möchte aber
dann "12" gespeichert haben, hat da jemand ne Idee?
Hier der Code:
Java:
package pack;

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;




public class frame extends JFrame {
	
	String lastCommand = "Unlock";
	boolean start = true;
	String zahlen;
	
	JButton eins;
	JButton zwei;
	JButton drei;
	JButton vier;
	JButton fünf;
	JButton sechs;
	JButton sieben;
	JButton acht;
	JButton neun;
	JButton zero;
	JButton unlock;
	JButton clear;

	
	public frame(){
		setSize(456,633);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setResizable(false);
		setLayout(null);
		setFocusable(true);
		
		ActionListener ac = new inputHandler();
		
		eins = new JButton("1");
		eins.setBounds(0,0,150,150);
		add(eins);
		eins.addActionListener(ac);
		
		zwei = new JButton("2");
		zwei.setBounds(150,0,150,150);
		add(zwei);
		zwei.addActionListener(ac);

		drei = new JButton("3");
		drei.setBounds(300,0,150,150);
		add(drei);
		drei.addActionListener(ac);
		
		vier = new JButton("4");
		vier.setBounds(0,150,150,150);
		add(vier);
		vier.addActionListener(ac);
		
		fünf = new JButton("5");
		fünf.setBounds(150,150,150,150);
		add(fünf);
		fünf.addActionListener(ac);
		
		sechs = new JButton("6");
		sechs.setBounds(300,150,150,150);
		add(sechs);
		sechs.addActionListener(ac);
		
		sieben = new JButton("7");
		sieben.setBounds(0,300,150,150);
		add(sieben);
		sieben.addActionListener(ac);
		
		acht = new JButton("8");
		acht.setBounds(150,300,150,150);
		add(acht);
		acht.addActionListener(ac);
		
		neun = new JButton("9");
		neun.setBounds(300,300,150,150);
		add(neun);
		neun.addActionListener(ac);
		
		zero = new JButton("0");
		zero.setBounds(150,450,150,150);
		add(zero);
		zero.addActionListener(ac);
		
		unlock = new JButton("Unlock");
		unlock.setBounds(300,450,150,150);
		add(unlock);
		unlock.addActionListener(new unlockHandler());
		
		clear = new JButton("Clear");
		clear.setBounds(0,450,150,150);
		clear.addActionListener(new clearHandler());
		add(clear);
		
		
	}
	
	public class inputHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			
			String input = e.getActionCommand();
			zahlen = input;
			
			
		}
	}
	
	public class unlockHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			
			
			if(zahlen.equals("1234")){
				System.out.println("Richtig");
			}
			else{
				System.out.println("Falsch");
			}
		}
		
		
	}
	public class clearHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
		
			zahlen = "";
			
		}
		
		
	}

	
}

Vielen Dank :)

Lg
 

wef34fewrg

Aktives Mitglied
In Zeile 112 musst du aus zahlen = input; ein zahlen+=input; machen

Du willst den neuen String ja hinten dran hängen und nicht ersetzen. ;)

Vollständigkeitshalber will ich nur erwähnen, dass das hintereinander setzen und somit ständig neu erzeugen von Strings nicht schön ist, aber für den Fall absolut zweckmäßig. :)
 

m.s

Mitglied
Aber wenn ich jetzt den richtigen Code eingebe und ihn dann ausprinten lasse dann wird mir angezeigt:
null1234

erst wenn ich ihn durch den Button "Clear" lösche und ihn dann nochmal eingebe, dann funktionierts weiß du warum da am anfang ein null vorkommt?
 

wef34fewrg

Aktives Mitglied
Ja.

Du musst die Variable "zahlen" initialisieren. Objektvariablen werden beim erstellen des Objekts mit null/0 belegt, wenn du nicht explizit was anderes angibst.

String zahlen = ""; behebt das Problem.
 

m.s

Mitglied
Danke und jetzt hab ich noch eine letzte Frage :)
ich möchte noch ein Display hinzufügen und möchte den Text oben in der Mitte haben und wenn ich etwas eingebe soll sich der Text in der Mitte oben schön verteilen also, das er nicht an einer Stelle bleibt sondern sich immer automatisch in die Mitte verschiebt :) Hast du da eine Idee?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J getActionCommand() vs. getSource() Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben