Hallo,
um die Erstellung eines GUI zu verstehen habe ich einen Taschenrechner nachgebaut (anhand eines YT Videos). Ich möchte es etwas verändern/erweitern, nämlich so, dass ich für die einzelnen Rechenaufgaben einen Button implementiere, der dann bei Klick auf " = " (ebenfalls ein JButton) die entsprechende Berechnung veranlasst. Ich habe mir dazu überlegt, dass ich mittels eines booleans die Aktion auslösen lassen könnte. S. hier:
Aufruf dann wie gewohnt in der Main. Leider scheint das nicht zu funktionieren. Es wird zwar alles dargestellt wie es soll, aber die JButton "+", "-", "*" & "/" sind entweder ohne Funktion ODER der Code funktioniert so noch nicht, weil die Berechnung nicht ausgeführt wird.
Ich verstehe aber nicht, wo das Problem liegt. Kann mir jemand weiterhelfen?
LG
um die Erstellung eines GUI zu verstehen habe ich einen Taschenrechner nachgebaut (anhand eines YT Videos). Ich möchte es etwas verändern/erweitern, nämlich so, dass ich für die einzelnen Rechenaufgaben einen Button implementiere, der dann bei Klick auf " = " (ebenfalls ein JButton) die entsprechende Berechnung veranlasst. Ich habe mir dazu überlegt, dass ich mittels eines booleans die Aktion auslösen lassen könnte. S. hier:
Java:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class GuiTaschenrechner extends JFrame {
private JLabel labelForNumber1;
private JLabel labelForNumber2;
private JTextField fieldForNumber1;
private JTextField fieldForNumber2;
private JButton add; boolean plus;
private JButton sub; boolean minus;
private JButton mult; boolean mal;
private JButton div; boolean geteilt;
private JButton rechnungAusfuehren;
public GuiTaschenrechner () {
setTitle(Taschenrechner);
setDefaultCloseOperation(EXIT_ON_CLOSE); //Legt fest, was bei [X] passiert //Exit_On_CLOSE = Standard-Variable
setLayout(new FlowLayout()); //Layout auswählen
setSize(750, 150); //Pixelgröße des Fensters
setResizable(true); //Fenstergröße (nicht) veränderbar
initiateComponents(); //Methodenaufruf zur Initiation der Komponenten
add(labelForNumber1);
add(labelForNumber2);
add(fieldForNumber1);
add(add); //Button plus
add(sub); //Button minus
add(mult); //Button mal
add(div); //Button geteilt
add(labelForNumber2);
add(fieldForNumber2);
add(rechnungAusfuehren);
setLocationRelativeTo(null); //Fenster in Mitte d. Bildschirms //null = Platzhalter
setVisible(true); //Sichtbarkeit Fenster
}
private void initiateComponents() {
labelForNumber1 = new JLabel("Zahl 1: ");
//HIER KOMMEN DIE JBUTTONS OHNE FUNKTION
add = new JButton("+");
add.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
plus = true;
}
});
sub = new JButton("-");
sub.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
minus = true;
}
});
mult = new JButton("*");
mult.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mal = true;
}
});
div = new JButton("/");
div.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
geteilt = true;
}
});
labelForNumber2 = new JLabel("Zahl 2: ");
fieldForNumber1 = new JTextField(5); //Feldbreite in Zeichen
fieldForNumber2 = new JTextField(5);
rechnungAusfuehren = new JButton("= ");
rechnungAusfuehren.addActionListener(new ActionListener() { //anonyme innere Klasse
@Override
public void actionPerformed(ActionEvent e) {
double zahl1 = Double.parseDouble(fieldForNumber1.getText());
double zahl2 = Double.parseDouble(fieldForNumber2.getText());
double ergebnis = 0;
//warum wird dadurch die Rechnung nicht ausgelöst?
if (plus = true) {
ergebnis = zahl1 + zahl2;
}
if (minus = true) {
ergebnis = zahl1 - zahl2;
}
if (mal = true) {
ergebnis = zahl1 * zahl2;
}
if (geteilt = true) {
ergebnis = zahl1 / zahl2;
}
else {
System.out.println("Falsche Eingabe.");
}
JOptionPane.showMessageDialog(GuiTaschenrechner.this, zahl1 + " " + " " //hier fehlt noch etwas um das Label für den Operanden einzufügen
+ zahl2 + " = " + ergebnis, "Ergebnis:", JOptionPane.INFORMATION_MESSAGE);
}
} );
}
}
Aufruf dann wie gewohnt in der Main. Leider scheint das nicht zu funktionieren. Es wird zwar alles dargestellt wie es soll, aber die JButton "+", "-", "*" & "/" sind entweder ohne Funktion ODER der Code funktioniert so noch nicht, weil die Berechnung nicht ausgeführt wird.
Ich verstehe aber nicht, wo das Problem liegt. Kann mir jemand weiterhelfen?
LG