Hallo Freunde, ich habe in dieser application einen Kombifeld instaliert. Mein problem ist, wenn ich die Addition auswähle soll er addierien , wenn ich Subraktion auswähle soll er subtraktion machen. Das problem ist ich muß die Rechenart die ausgeführt werden soll direkt über den Index des Ausgewählten eintrags in der Liste des Kombifeldes machen.
also über die setSelectedIndex() Methode.
wie ihr sieht habe ich einen Array erzeugt wo die operationen gelistet sind. Die index-nummer für Addition ist 0 u.s w. Das weiße ich auch , aber komme nicht weiter .Doe unten eingegebene Methode mus ich so ändern das ich die Operationen durchführen kann.
mfg
kaper28
----------------------------------------------------------------------------------------------------------------------
Der Ganze Quelletxt
also über die setSelectedIndex() Methode.
wie ihr sieht habe ich einen Array erzeugt wo die operationen gelistet sind. Die index-nummer für Addition ist 0 u.s w. Das weiße ich auch , aber komme nicht weiter .Doe unten eingegebene Methode mus ich so ändern das ich die Operationen durchführen kann.
mfg
kaper28
Code:
private String berechnen() {
double zahl1, zahl2, ergebnis = 0;
//jetzt mit Fehlerbehandlung und Ausgabe der Meldung durch eine eigene Methode
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");
}
return berechnen();
}
----------------------------------------------------------------------------------------------------------------------
Der Ganze Quelletxt
Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.AbstractButton;
import javax.swing.JComboBox;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
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 Aufgabe10_02 extends JFrame {
// automatisch über Eclipse eingefügt
private static final long serialVersionUID = 3006212012028893840L;
private static final AbstractButton Addition = null;
private String[] operation = { "Addition", "Subraktion", "Multiplikation",
"Division" };
// die Komponente
// zwei Eingabefelder
private JTextField eingabe1, eingabe2;
private JComboBox auswahl;
// zwei Schaltflächen
private JButton schaltflaecheBerechnen, schaltflaecheBeenden;
// ein Label für die Ausgabe
private JLabel ausgabe;
//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 Aufgabe10_02(String titel) {
super(titel);
// insgesamt 4 Panels
JPanel panelEinAus, panelBerechnung, panelButtons, gross;
// die Panels über die Methoden erstellen
panelEinAus = panelEinAusErzeugen();
panelBerechnung = panelBerechnungErzeugen();
panelButtons = panelButtonErzeugen();
// 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();
JComboBox auswahl = new JComboBox(operation);
// das Panel bekommt ein GridLaoyut mit 1 Spalte
tempPanel.setLayout(new GridLayout(0, 1));
// das Panel zurückliefern
return tempPanel;
}
// die Methode erzeugt das Panel für die Schaltflächen
// und liefert es zurück
private JPanel panelButtonErzeugen() {
JPanel tempPanel = new JPanel();
JComboBox auswahl = new JComboBox(operation);
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);
tempPanel.add(auswahl);
// 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;
//jetzt mit Fehlerbehandlung und Ausgabe der Meldung durch eine eigene Methode
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");
}
return berechnen();
}
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 Aufgabe10_02("Taschenrechner V2");
}
}