Methoden Währungsumrechner ActionListener

Basti83

Mitglied
Java:
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class Umrechner extends JFrame {

	private JPanel CP = null;
	private JButton rechnen = null;
	private JButton Ende = null;
	private JLabel ausganswährung = null;
	private JComboBox wählenausganswährung = null;
	private JButton Löschen = null;
	private JLabel zielwährung = null;
	private JComboBox auswahlzielwährung = null;
	private JLabel betraglabel = null;
	private JTextField eingabe = null;
	private JLabel ausgabelabel = null;
	private JTextField ausgabe = null;

	/**
	 * This method initializes 
	 * 
	 */
	public Umrechner() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 */
	private void initialize() {
        this.setSize(new Dimension(500, 290));
        this.setTitle("Währungsumrechner");
        this.setContentPane(getCP());
        
			
	}

	/**
	 * This method initializes CP	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getCP() {
		if (CP == null) {
			ausgabelabel = new JLabel();
			ausgabelabel.setBounds(new Rectangle(45, 164, 76, 16));
			ausgabelabel.setText("Ausgabe:");
			betraglabel = new JLabel();
			betraglabel.setText("Betrag:");
			betraglabel.setBounds(new Rectangle(46, 119, 75, 16));
			zielwährung = new JLabel();
			zielwährung.setText("Ausganswährung:");
			zielwährung.setBounds(new Rectangle(42, 30, 103, 16));
			ausganswährung = new JLabel();
			ausganswährung.setBounds(new Rectangle(43, 76, 100, 16));
			ausganswährung.setText("Zielwährung:");
			CP = new JPanel();
			CP.setLayout(null);
			CP.setBackground(Color.lightGray);
			CP.add(getRechnen(), null);
			CP.add(getEnde(), null);
			CP.add(ausganswährung, null);
			CP.add(getWählenausganswährung(), null);
			CP.add(getLöschen(), null);
			CP.add(zielwährung, null);
			CP.add(getAuswahlzielwährung(), null);
			CP.add(betraglabel, null);
			CP.add(getEingabe(), null);
			CP.add(ausgabelabel, null);
			CP.add(betraglabel, null);
			CP.add(getAusgabe(), null);
			CP.add(zielwährung, null);
		}
		return CP;
	}
// Button Rechnen
	private JButton getRechnen() {
		if (rechnen == null) {
			rechnen = new JButton();
			rechnen.setBounds(new Rectangle(199, 221, 86, 22));
			rechnen.setToolTipText("zum Umrechnen bitte drücken");
			rechnen.setText("Rechnen");
			rechnen.setActionCommand("rechnen");
			rechnen.setMnemonic(KeyEvent.VK_R);
			
		}
		return rechnen;
	}

// Button Ende
	private JButton getEnde() {
		if (Ende == null) {
			Ende = new JButton();
			Ende.setBounds(new Rectangle(346, 220, 86, 22));
			Ende.setMnemonic(KeyEvent.VK_E);
			Ende.setToolTipText("zum beenden vom Programm drücken");
			Ende.setText("Ende");
			// ActionListener damit das Programm aus geht
			Ende.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.exit(0);
				}
			});
		}
		return Ende;
	}

	// wähle währung der aber keine bedeutung hat
	private JComboBox getWählenausganswährung() {
		if (wählenausganswährung == null) {
			wählenausganswährung = new JComboBox((new Object[]{"Euro(€)","Dollar($)","Schweizer Franken(CHF)"}));
			wählenausganswährung.setBounds(new Rectangle(286, 30, 151, 19));
		}
		return wählenausganswährung;
	}

	// button löschen
	private JButton getLöschen() {
		if (Löschen == null) {
			Löschen = new JButton();
			Löschen.setBounds(new Rectangle(52, 220, 86, 22));
			Löschen.setText("Löschen");
			Löschen.setMnemonic(KeyEvent.VK_L);
		}
		return Löschen;
	}

	// Auswahlfeld für die gewählt währung
	private JComboBox getAuswahlzielwährung() {
		if (auswahlzielwährung == null) {
			auswahlzielwährung = new JComboBox((new Object[]{"Euro(€)","Dollar($)","Schweizer Franken(CHF)"}));
			auswahlzielwährung.setBounds(new Rectangle(286, 74, 151, 19));
		}
		return auswahlzielwährung;
	}

	// eingabefeld
	private JTextField getEingabe() {
		if (eingabe == null) {
			eingabe = new JTextField();
			eingabe.setHorizontalAlignment(SwingConstants.RIGHT);
			eingabe.setBounds(new Rectangle(286, 119, 107, 20));
		}
		return eingabe;
	}

	// Ausgabefeld
	private JTextField getAusgabe() {
		if (ausgabe == null) {
			ausgabe = new JTextField();
			ausgabe.setHorizontalAlignment(SwingConstants.RIGHT);
			ausgabe.setBounds(new Rectangle(286, 164, 107, 20));
		}
		return ausgabe;
	}
//	class MyActionListener implements ActionListener {
//
//		
//	
//	}

}  //  @jve:decl-index=0:visual-constraint="317,54"

Hallo erst mal,
ich bin leider noch ein kleiner Anfänger in der Sache und wir machen in der Schule zur Zeit ein Projekt.. Ich hab mir ein Währungsumrechner erstellt der zur Zeit in 3 Währungen umrechnen soll! Jetzt zu meinem Problem, ich hab keinen Ansatz wie ich jetzt meinen ActionListener sagen kann wenn jetzt z.b Dollar gewählt wurde das er die Zahl vom Eingabefeld mit dem Dollar Kurs der noch nicht enthalten ist rechnen soll!!

PS: bitte nicht über den Code wundern, den hat der Visual Editor erzeugt!!:oops:
 
Zuletzt bearbeitet von einem Moderator:

akimoon

Aktives Mitglied
ich schließ mich Slater an.
Einfach Stückchenweise an die Aufgabe herangehen.

1. ActionListener erstellen
2. ActionListener dem Button zuordnen
3. Text bei Click auf Button ausgeben lassen (Konsole)
4. Text aus Eingabefeld ausgeben -ggf. mit Rechnung (Konsole)
5. Text in Ausgabefeld ausgeben

Dann kann man dir auch eventuell genauer helfen wenn man weiß wo genau es hapert :)
 

Basti83

Mitglied
Java:
public void actionPerformed(ActionEvent e) {


if (e.getSource() == auswahlzielwährung){
switch (auswahlzielwährung.getSelectedIndex()){
case 0:
break;

case 1:
System.out.println("Euro unteres feld");
break;
case 2:
System.out.println("dollar unteres feld");
break;
case 3:
System.out.println("chf unteres feld");
break;
default:
System.out.println("fail");
break;


}
}
else if (e.getSource() == wählenausganswährung){
switch (wählenausganswährung.getSelectedIndex()){

case 0:
break;
case 1:
System.out.println("Euro oberes feld");
break;
case 2:
System.out.println("dollar oberes feld");
break;
case 3:
System.out.println("chf oberes feld");
break;
default:
System.out.println("fail");
break;


}
}

Jetzt hab ich schon mal den ActionListener so geschrieben das ich auf der Konsole sehe was ausgewählt wurde... nun mein Problem wie bekomme ich jetzt die Rechnung mit unter!!
Danke schon mal für die Hilfe
 
S

SlaterB

Gast
ein ActionListener beinhaltet Code, ganz simpel,
wenn du nicht weißt was du zu rechnen hast, dann hat das zumindest nichts mit dem ActionListener zu tun,

ansonsten ganz normal vorgehen, eine Code-Zeile unter der anderen:
- Option/ Wert 1 holen, in Variable ablegen (aus Textfeldern, evtl. String zu Zahl parsen, ComboBox wie du es mit getSelectedIndex() schon hast, usw)
- Option/ Wert 2 holen, in Variable ablegen
- Option/ Wert 3 holen, in Variable ablegen
- Option/ Wert 4 holen, in Variable ablegen
...
- Were verrechnen, evtl. kompliziert mit if/else/switch bei Optionen, vielleicht zunächst nur einfach mit einem Standard-Rechenweg anfangen
- Ergebnis ausgeben/ in Textfeld schreiben
- fertig

wählenausganswährung

edit:
du musst dich vielleicht davon löschen, dass der ActionListener genau einer Komponente zugeordnet ist bzw. bei dir mehreren aber dass es eine exakte Quelle gibt,
das muss nicht immer wichtig sein, du kannst dennoch Aktionen ausführen die das gesamte Programm betreffen,
du kannst wählenausganswährung und auswahlzielwährung gleichzeitig anschauen
 
Zuletzt bearbeitet von einem Moderator:

Basti83

Mitglied
So ich hab jetzt das geschrieben wenn er dollar wählen würde
Java:
String s;
			s = eingabe.getText();
			s = s.replace(',', '.');
			double d;
			d = Double.parseDouble(s);
			double erg;
			erg = d * DOLLARKURS;
			s = s.replace('.', ',');
			s = erg + "";
			s = String.format("%.2f", erg).replace('.', ',');
			ausgabe.setText(s);
			eingabe.requestFocusInWindow();
			eingabe.selectAll();
Und dann bekomme ich diese Fehlermeldung schon bei dem Auswählen von der Währung
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
	at java.lang.Double.parseDouble(Unknown Source)
	at test$MyActionListener.actionPerformed(test.java:196)
	at javax.swing.JComboBox.fireActionEvent(Unknown Source)
	at javax.swing.JComboBox.setSelectedItem(Unknown Source)
	at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
	at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 
S

SlaterB

Gast
die Fehlermeldung beinhaltet die exakte Zeilennummer in test.java, beinhaltet 'parseDouble' + 'empty String',
du kannst also erraten was der Fehler ist?

falls du schon etwas auswählst, bevor alle Textfelder befüllt sind und dann nicht unbedingt schon etwas gerechnet werden soll,
ist es doch leicht ersichtlich, dasss du z.B. eine Unterscheidung
Java:
  wenn Textfeld xy leer oder generell wenn noch nicht alle Daten vorhanden
  dann tue nix, evtl. Meldung
  sonst rechnen
einbauen kannst?

bitte bei Trivialitäten auch bisschen nachdenken


edit:
du hast auch einen Button "zum Umrechnen bitte drücken",
vielleicht nur Rechnen wenn der gedrückt wird (source bestimmen oder separater Listener), nicht wenn etwas in der Combobox ausgewählt wird?!
auf eine Selektion dort musst du im besten Fall überhaupt nicht reagieren, der ausgewählte Wert wird sowieso angezeigt, mehr ist nicht zu tun,
wenn Rechnen-Button 5 sec später kannst und musst du dann die Selektion auslesen, ganz egal ob damals vor 5 sec ein Listener irgendwas gemacht hat
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben