Kombifeld Ereignis auswählen und sofort ausführen lassen

Status
Nicht offen für weitere Antworten.

kaper28

Bekanntes Mitglied
Hallo, ersten vielen Dank an Marco13 für seine Hilfe .Mit seinem Tip sieht es jetzt besser aus. Nur ich möchte nur eine kleine änderung vornehmen. Wie ihr sieht muß ich erstmal berechnen drücken um die Rechen aufgabe zu machen .Aber ich möchte direkt vom Kombifeld Addition auswählen und ohne die Rechnen Button zu drücken soll die App mir die ergebnisse rechnen.

Was ich gefunden habe ?

Ich brauche eine ItemListener für die ereignisverarbeitung .
Einen Kontroller der mir sagt welches Komponente errg.ausgelöst hat.




Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class Aufgabe1002 extends JFrame {

	//die Komponente
	//zwei Eingabefelder
	private JTextField eingabe1, eingabe2;

	// die Schaltflaechen
	private JButton schaltflaecheBerechnen, schaltflaecheBeenden;

	//ein Label für die Ausgabe
	private JLabel ausgabe;

	//ein Combox 
	private JComboBox auswahl;

	private String[] opeauswahl = { "Addition", "Subraktion", "Division",
			"Multiplikation" };

	//die innere Klasse für die Ereignisverarbeitung
	class MeinListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {

			//wurde auf Beenden geklickt?
			//dann das Programm beenden
			if (e.getActionCommand().equals("ende"))
				System.exit(0);
			//wurde auf Berechnen geklickt?
			//dann eine Methode für die Berechnung aufrufen
			//und das Ergebnis anzeigen
			if (e.getActionCommand().equals("rechnen"))
				ausgabe.setText(berechnen());
		}

	}

	// der Konstruktor 

	public Aufgabe1002(String titel) {

		super(titel);

		//insgesamt 4 Panels
		JPanel panelEinAus, panelBerechnung, panelButtons, gross;

		//die Panels über die Methoden erstellen
		panelEinAus = panelEinAusErzeugen();
		panelBerechnung = panelBerechnungErzeugen();
		panelButtons = panelButtonErzeugen();

		//das Border-Layout benutzen
		//es ist Standard und muss nicht gesetzt werden

		//die Panels hinzufügen
		//die beiden größeren Panel fassen wir noch einmal zusammen
		gross = new JPanel();
		gross.add(panelEinAus);
		gross.add(panelBerechnung);
		//die beiden kommen in die Mitte
		add(gross, BorderLayout.CENTER);
		//das Panel mit den Buttons nach rechts
		add(panelButtons, BorderLayout.EAST);

		//die Standard-Aktion setzen
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		//packen und anzeigen
		pack();
		setVisible(true);

		//Größenänderungen sind nicht zugelassen
		//damit das mühsam erstellte Layout nicht durcheinander kommt
		setResizable(false);
	}

	//die Methode erzeugt das Panel für die Ein- und Ausgabe
	//und liefert es zurück
	private JPanel panelEinAusErzeugen() {
		JPanel tempPanel = new JPanel();
		//es enthält die Eingabefelder mit beschreibendem Text und die Ausgabe
		//die Länge der Felder ist auf 10 Zeichen beschränkt
		eingabe1 = new JTextField(10);
		eingabe2 = new JTextField(10);
		ausgabe = new JLabel("");

		//das Panel bekommt ein GridLaoyut mit 2 Spalten und etwas Abstand
		tempPanel.setLayout(new GridLayout(0, 2, 10, 10));
		//ein beschreibendes Label für die erste Eingabe
		tempPanel.add(new JLabel("Zahl 1:"));
		//das erste Eingabefeld
		tempPanel.add(eingabe1);

		//und jetzt das zweite Eingabefeld
		tempPanel.add(new JLabel("Zahl 2: "));
		tempPanel.add(eingabe2);

		//und nun das Ausgabefeld für das Ergebnis
		tempPanel.add(new JLabel("Ergebnis: "));
		tempPanel.add(ausgabe);

		//einen Rahmen um das Panel ziehen
		tempPanel.setBorder(new TitledBorder("Ein- und Ausgabe"));

		//das Panel zurückliefern
		return tempPanel;
	}

	//die Methode erzeugt das Panel für die Auswahl
	//der Rechenoperation und liefert es zurück
	private JPanel panelBerechnungErzeugen() {

		JPanel tempPanel = new JPanel();

		auswahl = new JComboBox(opeauswahl);
		tempPanel.add(auswahl);

		//und einen Rahmen
		tempPanel.setBorder(new TitledBorder("Operation: "));

		return tempPanel;
	}

	//die Methode erzeugt das Panel für die Schaltflächen
	//und liefert es zurück
	private JPanel panelButtonErzeugen() {
		JPanel tempPanel = new JPanel();

		schaltflaecheBeenden = new JButton(" Beenden ");
		//das Aktion-Command setzen
		schaltflaecheBeenden.setActionCommand("ende");
		schaltflaecheBerechnen = new JButton("Berechnen");
		schaltflaecheBerechnen.setActionCommand("rechnen");

		//Zwischenpanel für die Schaltflächen
		//ebenfalls ein GridLayout
		tempPanel.setLayout(new GridLayout(0, 1));
		tempPanel.add(schaltflaecheBerechnen);
		//ein leeres Label einfügen
		tempPanel.add(new JLabel());
		tempPanel.add(schaltflaecheBeenden);

		//die Schaltflächen mit dem Listener verbinden
		MeinListener listener = new MeinListener();
		schaltflaecheBeenden.addActionListener(listener);
		schaltflaecheBerechnen.addActionListener(listener);

		//das Panel zurückliefern
		return tempPanel;
	}

	private String berechnen() {
		double zahl1, zahl2, ergebnis = 0;

		try {
			zahl1 = Double.parseDouble(eingabe1.getText());
		} catch (Exception NumberFormatException) {
			fehlermeldung(eingabe1);
			return ("Nicht definiert");
		}

		try {
			zahl2 = Double.parseDouble(eingabe2.getText());
		} catch (Exception NumberFormatException) {
			fehlermeldung(eingabe2);
			//das Ergebnis ist nicht definiert
			return ("Nicht definiert");
		}

		if (auswahl.getSelectedIndex() == 0) {
			ergebnis = zahl1 + zahl2;
		}
		if (auswahl.getSelectedIndex() == 1) {
			ergebnis = zahl1 - zahl2;
		}

		if (auswahl.getSelectedIndex() == 2) {
			ergebnis = zahl1 / zahl2;
		}
		if (auswahl.getSelectedIndex() == 3) {
			ergebnis = zahl1 * zahl2;
		}

		return String.valueOf(ergebnis);

	}

	private void fehlermeldung(JTextField eingabefeld) {
		JOptionPane.showMessageDialog(this, "Ihre Eingabe ist nicht gültig",
				"Eingabefehler", JOptionPane.ERROR_MESSAGE);
		eingabefeld.requestFocus();
	}

	public static void main(String[] args) {

		new Aufgabe1002("Aufgabe 10_02");

	}

}
 

Marco13

Top Contributor
Häh ja ... eine Frage zu stellen würde die Antwort erleichtern.... aber vielleicht sowas
Code:
private JPanel panelBerechnungErzeugen() { 
   
...

    auswahl.addActionListener(new ActionListener()
    {
        public void actionPreformed(ActionEvent e)
        {
             berechne();
        }
    });

Man könnte in der actionPerformed auch sowas wie
if (e.getActionCommand().equals("addieren")) { .... }
machen, und dafür die Sache mit dem getSelectedIndex aus der berechnen() rausnehmen ... aber das musst alles DU entscheiden....
 

kaper28

Bekanntes Mitglied
Marco13 hat gesagt.:
Häh ja ... eine Frage zu stellen würde die Antwort erleichtern.... aber vielleicht sowas
Code:
private JPanel panelBerechnungErzeugen() { 
   
...

    auswahl.addActionListener(new ActionListener()
    {
        public void actionPreformed(ActionEvent e)
        {
             berechne();
        }
    });

Man könnte in der actionPerformed auch sowas wie
if (e.getActionCommand().equals("addieren")) { .... }
machen, und dafür die Sache mit dem getSelectedIndex aus der berechnen() rausnehmen ... aber das musst alles DU entscheiden....

was ist denn die frage Marco ?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Kombifeld auswählen, rechnung sofort ausführen Java Basics - Anfänger-Themen 11
Luk10 Bestimmung eines (Zufalls)Ereignis Java Basics - Anfänger-Themen 10
thorr Ereignis bei Klick auf Button Java Basics - Anfänger-Themen 3
H Erste Schritte Kein Zugriff auf einen button der ein Ereignis ausgelöst hat Java Basics - Anfänger-Themen 2
T Warteschlange warten lassen bis Ereignis Java Basics - Anfänger-Themen 27
C Ereignis nach einer gewissen Zeit Java Basics - Anfänger-Themen 10
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
C Problem bei JPanel nach Ereignis Java Basics - Anfänger-Themen 2
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
M List<String> auswählen Java Basics - Anfänger-Themen 42
K Comparable - Objekte aus Array vergleichen und größtes auswählen Java Basics - Anfänger-Themen 1
F Erste Schritte Random Zahl auswählen Java Basics - Anfänger-Themen 7
P Char aus einem String auswählen Java Basics - Anfänger-Themen 4
A Wie kann man einen zufälligen String aus einem StringArray auswählen? Java Basics - Anfänger-Themen 6
M JFileChooser Ordner auswählen Java Basics - Anfänger-Themen 5
M aus x Elementen y Elemente auswählen Java Basics - Anfänger-Themen 6
B Variablen Mehrere Zahlen mit unterschiedlicher Wahrscheinlichkeit mit Random auswählen Java Basics - Anfänger-Themen 17
J fortlaufende Objekte durch Variable auswählen; Datenbank Java Basics - Anfänger-Themen 4
w0ddes In JTable Reihen programmatisch Auswählen aber für Benutzer sperren Java Basics - Anfänger-Themen 17
D Screen Capture Programm - Ausschnitte auswählen Java Basics - Anfänger-Themen 5
M Zufälliges Auswählen von Textfields Java Basics - Anfänger-Themen 5
R Objekt mit Maus auswählen und verschieben Java Basics - Anfänger-Themen 2
T Laufwerk auswählen und CD-Inhalt in txt Datei speichern Java Basics - Anfänger-Themen 16
G Mehrere Dateien mit JFilechooser auswählen und öffnen. Java Basics - Anfänger-Themen 6
Antoras Einen zufälligen String auswählen Java Basics - Anfänger-Themen 5
I Schriftart für einzelnes Wort in der JTextArea auswählen Java Basics - Anfänger-Themen 3
D zuletzt erstellte oder gänderte Datei auswählen! Java Basics - Anfänger-Themen 10
K Java-FileChooser - mehrere Dateien auswählen Java Basics - Anfänger-Themen 3
C txt - Datei auswählen und in texarea abspeichern Java Basics - Anfänger-Themen 2
S Rechenoperationen auswählen Java Basics - Anfänger-Themen 14
H Pfad auswählen Java Basics - Anfänger-Themen 4
J JCombobox Item auswählen Java Basics - Anfänger-Themen 13
S Enum durch String auswählen Java Basics - Anfänger-Themen 8
G Jfilechooser ordner auswählen? Java Basics - Anfänger-Themen 2
halla zufälligen Buchstabe aus dem Alfabet auswählen Java Basics - Anfänger-Themen 5
R Datei auswählen und einlesen Java Basics - Anfänger-Themen 10
G Zeilen auswählen und löschen Java Basics - Anfänger-Themen 29
G String per Zufall auswählen Java Basics - Anfänger-Themen 9
DEvent Dialogfenster in dem man Verzeichnisse auswählen kann Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben