Hallo Leute,
folgendes Programm habe ich geschrieben. Es ist ein einfacher Taschenrechner mit GUI der Klasse JFrame, aber er will nicht so, wie ich will. Ich habe es schon einmal hinbekommen, wie man diesen programmiert, aber jetzt bekomme ich es nicht mehr hin.
Er sieht folgendermaßen aus: Auf einem JFrame sind zwei TextFields nebeneinander aufgelistet, in denen man Werte hineinschreiben kann. Es gibt zwei Buttons, einmal "+" und einmal "=". Das "="-Zeichen möchte ich noch nicht miteinbeziehen (bitte gebt mir dazu noch keinen Lösungsvorschlag). Ich möchte, dass, wenn ich auf den "+"-Button klicke, dass dann auf dem Label das Ergebnis von den beiden TextFields angezeigt wird. Ich kriege das nicht hin, bei mir bleibt das Ergebnis permanent "0".
Wer kann mir helfen?
Ich danke euch für eure Antworten!
Hier der Code:
[Java]
//Klasse mit Main-Funktion
import javax.swing.JFrame;
public class Taschenrechner {
public static void main(String[] args) {
JFrame jf = new TaschenrechnerLook();
jf.setVisible(true);
}
}
//2. Klasse: Elemente + Addition
import java.awt.Color;
import java.awt.TextField;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;
public class TaschenrechnerLook extends JFrame {
JButton jb, jb2;
TextField tf1, tf2;
JLabel jl;
Border border;
public TaschenrechnerLook() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setBounds(500, 50, 300, 500);
setLayout(null);
jb = new JButton("+");
jb.setBounds(100, 200, 70, 70);
add(jb);
jb2 = new JButton("=");
jb2.setBounds(100, 300, 70, 70);
add(jb2);
tf1 = new TextField("0");
tf1.setBounds(20, 50, 100, 100);
add(tf1);
tf2 = new TextField("0");
tf2.setBounds(130, 50, 100, 100);
add(tf2);
jl = new JLabel();
jl.setBounds(20, 380, 200, 70);
add(jl);
jl.setBorder(BorderFactory.createLineBorder(Color.black));
String ergebnisStr = addieren();
jb.addActionListener(new Aktion(tf1, tf2, jl, ergebnisStr));
}
public String addieren() {
int zahl1 = Integer.parseInt(tf1.getText());
int zahl2 = Integer.parseInt(tf2.getText());
int ergebnisInt = zahl1 + zahl2;
String ergebnisString = Integer.toString(ergebnisInt);
return ergebnisString;
}
}
//3. Klasse: Aktion durch Mausklick
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
public class Aktion implements ActionListener {
TextField tf1;
TextField tf2;
JLabel jl;
String endergebnis;
public Aktion(TextField tf1, TextField tf2, JLabel jl, String endergebnis) {
this.tf1 = tf1;
this.tf2 = tf2;
this.jl = jl;
this.endergebnis = endergebnis;
this.jl.setText(endergebnis);
}
@Override
public void actionPerformed(ActionEvent arg0) {
jl.getText();
}
}
[/Java]
Liebe Grüße,
Seropt
PS: Ggf. ist das Programm noch nicht so optimal und effizient programmiert. Bitte darauf noch keine Rücksicht nehmen!
folgendes Programm habe ich geschrieben. Es ist ein einfacher Taschenrechner mit GUI der Klasse JFrame, aber er will nicht so, wie ich will. Ich habe es schon einmal hinbekommen, wie man diesen programmiert, aber jetzt bekomme ich es nicht mehr hin.
Er sieht folgendermaßen aus: Auf einem JFrame sind zwei TextFields nebeneinander aufgelistet, in denen man Werte hineinschreiben kann. Es gibt zwei Buttons, einmal "+" und einmal "=". Das "="-Zeichen möchte ich noch nicht miteinbeziehen (bitte gebt mir dazu noch keinen Lösungsvorschlag). Ich möchte, dass, wenn ich auf den "+"-Button klicke, dass dann auf dem Label das Ergebnis von den beiden TextFields angezeigt wird. Ich kriege das nicht hin, bei mir bleibt das Ergebnis permanent "0".
Wer kann mir helfen?
Ich danke euch für eure Antworten!
Hier der Code:
[Java]
//Klasse mit Main-Funktion
import javax.swing.JFrame;
public class Taschenrechner {
public static void main(String[] args) {
JFrame jf = new TaschenrechnerLook();
jf.setVisible(true);
}
}
//2. Klasse: Elemente + Addition
import java.awt.Color;
import java.awt.TextField;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;
public class TaschenrechnerLook extends JFrame {
JButton jb, jb2;
TextField tf1, tf2;
JLabel jl;
Border border;
public TaschenrechnerLook() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setBounds(500, 50, 300, 500);
setLayout(null);
jb = new JButton("+");
jb.setBounds(100, 200, 70, 70);
add(jb);
jb2 = new JButton("=");
jb2.setBounds(100, 300, 70, 70);
add(jb2);
tf1 = new TextField("0");
tf1.setBounds(20, 50, 100, 100);
add(tf1);
tf2 = new TextField("0");
tf2.setBounds(130, 50, 100, 100);
add(tf2);
jl = new JLabel();
jl.setBounds(20, 380, 200, 70);
add(jl);
jl.setBorder(BorderFactory.createLineBorder(Color.black));
String ergebnisStr = addieren();
jb.addActionListener(new Aktion(tf1, tf2, jl, ergebnisStr));
}
public String addieren() {
int zahl1 = Integer.parseInt(tf1.getText());
int zahl2 = Integer.parseInt(tf2.getText());
int ergebnisInt = zahl1 + zahl2;
String ergebnisString = Integer.toString(ergebnisInt);
return ergebnisString;
}
}
//3. Klasse: Aktion durch Mausklick
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
public class Aktion implements ActionListener {
TextField tf1;
TextField tf2;
JLabel jl;
String endergebnis;
public Aktion(TextField tf1, TextField tf2, JLabel jl, String endergebnis) {
this.tf1 = tf1;
this.tf2 = tf2;
this.jl = jl;
this.endergebnis = endergebnis;
this.jl.setText(endergebnis);
}
@Override
public void actionPerformed(ActionEvent arg0) {
jl.getText();
}
}
[/Java]
Liebe Grüße,
Seropt
PS: Ggf. ist das Programm noch nicht so optimal und effizient programmiert. Bitte darauf noch keine Rücksicht nehmen!
Zuletzt bearbeitet: