ActionListener versch. Buttons zuweisen => versch. Method

Status
Nicht offen für weitere Antworten.

norman

Top Contributor
hey,

habe mich schonmal bei http://www.java-forum.org/de/viewtopic.php?t=21422&highlight=button+actionlistener umgesehen, aber das hilf mir nicht sehr viel weiter.

möchte einen TR schreiben (*gähn*, ich weiß). jedenfalls hat der ja knöpfe für + - * / usw.
wie kann ich jetzt in die ActionPerfomed-methode ein switch oder so machen, damit vom button abhängt, was bei action (klick) gemacht wird?

dachte an sowas wie:

Code:
switch(name des buttons) {
case plus : addieren();break;
case minus: subtr();break;
}

aber wie kann ich den namen des buttons erfahren?
 

SnooP

Top Contributor
Jo... um das zu präzisieren ;) ...
jeder Button erhält standardmäßig ein ActionCommand in Form des Button-textes... - das ist by the way bei allen Steuerelementen ähnlich. Alternativ kann man einzelnen Buttons per addActionCommand einen eigenen String geben (z.B. in case of Internationalisierung oder langen umständlichen Texten).
In der actionPerformed-Methode kannst du mit "evt.getActionCommand())" genau diesen String wieder auslesen und so die Herkunft differenzieren.
Ne andere Möglichkeit, die manchmal auch erforderlich sein kann, ist mit evt.getSource() die Quelle des Events herauszufinden - ein Vergleich mit == geht dann natürlich nur, wenn du von der Methode aus Zugriff auf das tatsächlich auslösende Objekt hast.

Für deine (und die meisten anderen) Zwecke ist die ActionCommand-Methode aber die sinnvollere...

hf
 

Dysall

Mitglied
Code:
 public void actionPerformed(ActionEvent evt)
{
Object source = evt.getSource();

				

//kommata
if (source==bk)
	{	
	if (tRech.getText().indexOf('.') >0) 
		{}
		else tRech.append(".");

	}
//plus
//****************************************************************
//Wir Unterscheiden im Folgenden immer von der Rchnung mit Null,
//also der möglichkeit NACH dem ist-gleich nochmal auf PLus zu
//drücken, und dem betätigen des Buttons NACH dem eintragen einer Zahl.
//Dadurch besteht die möglichkeit ein "leeres" feld mit "null" zu
//füllen und somit die exception zu vermeiden.
//****************************************************************
if (source==bp)
		{
		if (tRech.getText().equals("code"))
		{
		hy.gimmick(); //das hier einfach ignorieren.....
		}
		else{
		if (tRech.getText().length()==0)
		{tRech.setText("0");
		hy.setH(tErg.getText()+"+");
		tErg.setText(rz.plus(tRech.getText()));
		tRech.setText("");
			
		}
		
		
		else {

		
		hy.setH(tRech.getText()+"+");
		tErg.setText(rz.plus(tRech.getText()));
		tRech.setText("");
	
		}}}
rz ist mein "rechenzentrum" in dem dann erst die eigentliche rechnung gemacht wird
hy = history in der ich sämtliche rechnungen aufliste zum nachlesen.

Wer noch ne kompliziertere art findet schreit halt :bae:

Achja kann man einen funktionierenden rechner auch mit weniger als 2000 zeilen schreiben????
 

norman

Top Contributor
nun ja..das ist mein stand:

Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class rechner extends Applet implements ActionListener {
	
	TextField display = new TextField(15);
	
	Button b0 = new Button("0");	Button b1 = new Button("1");	Button b2 = new Button("2");	Button b3 = new Button("3");
	Button b4 = new Button("4");	Button b5 = new Button("5");	Button b6 = new Button("6");	Button b7 = new Button("7");
	Button b8 = new Button("8");	Button b9 = new Button("9");
	Button clear = new Button("Clear"); Button erg = new Button("=");
	Button plus = new Button("+");	Button minus = new Button("-");	Button multi = new Button("*");Button divi = new Button("/");
	Panel p1 = new Panel();			Panel p2 = new Panel();			Panel p3 = new Panel();
	Panel p4 = new Panel();			Panel p5 = new Panel();			Panel p6 = new Panel();
	
	
	public void actionPerformed(ActionEvent e){
		e.getActionCommand();
	}
	
	public void init(){
		setBackground(Color.LIGHT_GRAY);
		setLayout(new GridLayout(6,1,10,10));
		
		p1.add(display);
		p2.add(clear);p2.add(erg);
		p3.add(b7);p3.add(b8);p3.add(b9);p3.add(divi);
		p4.add(b4);p4.add(b5);p4.add(b6);p4.add(multi);
		p5.add(b1);p5.add(b2);p5.add(b3);p5.add(minus);
		p6.add(b0);						 p6.add(plus);		
		
		b0.addActionListener(this);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);
		b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);
		clear.addActionListener(this);erg.addActionListener(this);
		
		add(p1);add(p2);add(p3);add(p4);add(p5);add(p6);
	}
	
}

sehe jetzt, dass scheinbar JButtons anstelle Buttons benutzt werden. wo liegt hier der Unterschied? habe kurz den b0 als JButton gemacht, dann kamen fehler bei b0.addActionListener(this) usw..

. o O ( schon echt mies wenn man sich nicht auskennt )
 

Dysall

Mitglied
Code:
public void actionPerformed(ActionEvent evt)
{

Object source = evt.getSource();

//NUMMERN
if (source==bEins)
	tRech.append("1");
if (source==bZwei)
	tRech.append("2");
if (source==bDrei)
	tRech.append("3");
if (source==bVier)
	tRech.append("4");
if (source==bFunf)
	tRech.append("5");
if (source==bSex)
	tRech.append("6");
if (source==bSieb)
	tRech.append("7");
if (source==bAcht)
	tRech.append("8");
if (source==bNeun)
	tRech.append("9");
if (source==bNull)
	tRech.append("0");


So das ist 0-9, und or allem : du mußt die buttons dem actionlistener zuweisen wenn sie erstelllt wrden, also nicht im Action listener sondern im Konstruktor bzw : gleich nach dem erstellen sämtlicher butons
 

AlArenal

Top Contributor
Oder so:

Code:
	/**
	 * All-in-one ActionListener
	 * 
	 *
	 */
	class MyActionListener implements ActionListener {
		public static final int BUTTON_CANCEL = 1;
		public static final int BUTTON_OK = 2;
		public static final int COMBOBOX_LOCATION = 3;
		public static final int COMBOBOX_PROCESS = 4;
		
		private int type = -1;
		
		/**
		 * 
		 * @param type
		 */
		public MyActionListener(int type) {
			this.type= type;
		}			
		
		/**
		 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
		 */
		public void actionPerformed(ActionEvent e) {			
			switch (type) {
			case BUTTON_CANCEL: 
				dispose();
				break;
				
			case BUTTON_OK:
				blabla();
				break;
				
			case COMBOBOX_LOCATION:
				blubbblubb();
				break;
				
			case COMBOBOX_PROCESS:
				dumdidum();
				break;
				
			default:
				System.println("Ich nix kennen Action: " + type);
			}
		}		
	}

Und dann halt irgendwo:

Code:
button_ok.addActionListener(new MyActionListener(MyActionListener.BUTTON_OK));
 

mic_checker

Top Contributor
wo ist das problem mit arrays? probiers doch einfach mal und poste dann etwaige Fehlermeldungen, denk nur dran:
wenn du das array deklariert hast , kannst du noch nicht auf die einzelnen Buttons direkt zugreifen, da du ne Nullpointer kriegen wirst, also erst sicherstellen das die Objekte korrekt instanziert wurden.

Noch was: Wofür die ganzen Panels? Das macht es nicht gerade übersichtlicher.
 

norman

Top Contributor
ich dachte an soetwas wie
Code:
Button zahlen[] = new Button("0","1","2"); //...
naja..
die panels waren gedacht, um die buttons zu formatieren..aber eher nicht erfolgreich gewesen
 

mic_checker

Top Contributor
mir scheints als wärst du allgemein im umgang mit arrays noch nicht allzu vertraut.

Code:
JButton zahlen[] = new JButton[10];

Danach kannst du entweder in ner Schleife o. wenn du willst auch einzeln die Objekte instanzieren.

Code:
zahlen[0] = new JButton("0");

In dem Fall wäre eine Schleife aber auch einfach und erspart dir etwas tipparbeit etc.
wie die schleife aussieht kannst mal schön selbst überlegen ;)
 

TRunKX

Bekanntes Mitglied
Ahhh was schreibselt der Junge da für ein Chaos das mit den Zeilenumbrüchen üben wir noch!!!

Achja ich will nur eine Frage beantworten: Kann man einen Rechner mit weniger als 2000 Zeilen schreiben ?

Assembler Programmierer : Wir denken nicht in Zeilen
Cobol Programmierer: Klar aber nicht mit Cobol
Fortran Programmierer: *pieeeeeeeeeeep*
C Programmierer: In der theorie ja!! Wie ? mit GUI? *wegrennt*
C++ Programmierer: .... geben sie mir mal das Klassendiagramm *schaut* unmöglich aber hübsch
Java Programmierer: Wo ist das Problem? TaschenRechner tr = new Taschenrechner();


Verstehst du was ich meine? Wenn du einen tollen schreibst dann gib ihn uns allen und wir werden ihn ganz sicher benutzen so funktioniert Java!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Button's mit versch. Aufgaben/ActionListener Java Basics - Anfänger-Themen 12
E ActionListener Java Basics - Anfänger-Themen 4
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Array Actionlistener Java Basics - Anfänger-Themen 9
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
P Erste Schritte ActionListener Java Basics - Anfänger-Themen 2
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb ActionListener Java Basics - Anfänger-Themen 1
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
F ActionListener mit Files etc Java Basics - Anfänger-Themen 12
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
CptK Auf ActionListener von anderer Klass aus zugreifen Java Basics - Anfänger-Themen 5
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
U ActionListener mit JMenuItems verknüpfen Java Basics - Anfänger-Themen 1
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
L Problem bei Java-ActionListener Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
JavaNewbie2.0 ActionListener Java Basics - Anfänger-Themen 11
Voreck Actionlistener problem Java Basics - Anfänger-Themen 1
G Im ActionListener eine "äußere" Variable verändern Java Basics - Anfänger-Themen 13
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
M public static int in ActionListener Java Basics - Anfänger-Themen 6
S actionlistener timer Java Basics - Anfänger-Themen 9
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
P aus ActionListener auf HauptFrame zugreifen Java Basics - Anfänger-Themen 4
A Klassen Bool Actionlistener Java Basics - Anfänger-Themen 2
K Methoden ActionListener wird übersprungen Java Basics - Anfänger-Themen 3
S actionlistener Java Basics - Anfänger-Themen 29
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
J ActionListener Java Basics - Anfänger-Themen 5
A ActionListener Java Basics - Anfänger-Themen 9
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
Z ActionListener wird nicht erkannt? Java Basics - Anfänger-Themen 5
T ActionListener Source vergleichen Java Basics - Anfänger-Themen 8
T Frage zum ActionListener Java Basics - Anfänger-Themen 5
R ActionListener mit for Schleife füllen. Java Basics - Anfänger-Themen 4
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
I ActionListener reagiert nicht Java Basics - Anfänger-Themen 6
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
D Erste Schritte Buttons mit actionlistener Problem Java Basics - Anfänger-Themen 3
S JButton mit ActionListener Java Basics - Anfänger-Themen 5
S ActionListener, Methoden und Variablen Java Basics - Anfänger-Themen 4
X Variablen Actionlistener | Variablen-namen Java Basics - Anfänger-Themen 5
G ActionListener implementieren Java Basics - Anfänger-Themen 12
T Erste Schritte Berechnete Variable im ActionListener zurückführen Java Basics - Anfänger-Themen 6
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
M Button , actionlistener Java Basics - Anfänger-Themen 11
P Erste Schritte JTable mit Daten aus Acces DB füllen und Actionlistener einsetzen Java Basics - Anfänger-Themen 29
M Actionlistener Java Basics - Anfänger-Themen 9
D Problem mit ausgelagertem Actionlistener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
M Klassen Durch den ActionListener das GUI einer anderen Klasse verändern Java Basics - Anfänger-Themen 8
T NullPointerException im ActionListener Java Basics - Anfänger-Themen 3
C Erste Schritte GUI - ActionListener - Exception Nullpointer Java Basics - Anfänger-Themen 5
Kenan89 ActionListener in eigene Klasse Java Basics - Anfänger-Themen 8
E JMenu ActionListener reagiert nicht? Java Basics - Anfänger-Themen 6
V ActionListener in einer for-Schleife Java Basics - Anfänger-Themen 2
S Erste Schritte ActionListener auf Buttons einrichten Java Basics - Anfänger-Themen 3
M Variablen Variable lässt sich durch ActionListener nicht ändern Java Basics - Anfänger-Themen 5
P ActionListener Action Event Java Basics - Anfänger-Themen 5
L ActionListener zerschießt AnchorLayout Java Basics - Anfänger-Themen 8
D ActionListener braucht zwei Klicks auf Button??? Java Basics - Anfänger-Themen 2
M Methoden Timer in ActionListener aufrufen Java Basics - Anfänger-Themen 2
Y Actionlistener passt nicht zu Dataset Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
F actionListener Java Basics - Anfänger-Themen 3
T ActionListener auslagern Java Basics - Anfänger-Themen 14
S Actionlistener funktionieren nicht in der .jar Java Basics - Anfänger-Themen 9
E ActionListener abwarten lassen? Java Basics - Anfänger-Themen 11
E ActionListener in anderer Klasse erkennen Java Basics - Anfänger-Themen 13
H ActionListener Verbesserung möglich? (This) Java Basics - Anfänger-Themen 3
E ActionListener erkennt instanz nicht Java Basics - Anfänger-Themen 9
V ActionListener bei vielen Modulen Java Basics - Anfänger-Themen 3
J ActionListener Java Basics - Anfänger-Themen 2
T JLabel durch ActionListener ändern Java Basics - Anfänger-Themen 4
S ActionListener Java Basics - Anfänger-Themen 4
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
K Actionlistener Java Basics - Anfänger-Themen 7
M ActionListener außerhalb des EDT ausführen Java Basics - Anfänger-Themen 2
A ActionListener im JMenu - Problem Java Basics - Anfänger-Themen 2
M ActionListener reagiert nicht Java Basics - Anfänger-Themen 4
N ActionListener + GUI Java Basics - Anfänger-Themen 8
H Bewegtes Bild im ActionListener [Problem] Java Basics - Anfänger-Themen 12
D Liste+ActionListener Java Basics - Anfänger-Themen 6
L wie Jframe an ActionListener übergeben Java Basics - Anfänger-Themen 4
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
A JButton ActionListener nach einmaligem Ausführen zurücksetzen Java Basics - Anfänger-Themen 13
Luk10 Problem mit ActionListener Java Basics - Anfänger-Themen 6
R Viereck zeichnen über TextField-Eingabe /ActionListener Java Basics - Anfänger-Themen 9
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
C ActionListener problem Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben