Moin,
hab gerad mal als Übungsaufgabe nen einfachen Rechner programmiert.
Der funktioniert zwar aber was die Ereignisbehandlung angeht denke ich es is nen bisschen üppig.
Der Rechner rechnet nur ganzzahlig und besitzt auch nur die Grundrechenarten "+, -, *, /"
Wäre nett wenn ihr irgendwelche Verbesserungsvorschläge habt.
Bin mir auch nie so ganz sicher wo ich jetzt eine Unterteilung in eine andere Klasse machen soll
wie ihr seht steht der ganze Code bei mir in einer Klasse.
Also schluss mit dem Gelaber hier der Code:
(Danke schonmal für die Hilfe)
hab gerad mal als Übungsaufgabe nen einfachen Rechner programmiert.
Der funktioniert zwar aber was die Ereignisbehandlung angeht denke ich es is nen bisschen üppig.
Der Rechner rechnet nur ganzzahlig und besitzt auch nur die Grundrechenarten "+, -, *, /"
Wäre nett wenn ihr irgendwelche Verbesserungsvorschläge habt.
Bin mir auch nie so ganz sicher wo ich jetzt eine Unterteilung in eine andere Klasse machen soll
wie ihr seht steht der ganze Code bei mir in einer Klasse.
Also schluss mit dem Gelaber hier der Code:
(Danke schonmal für die Hilfe)
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Rechner_Frame extends JFrame implements ActionListener{
JButton but1;
JButton but2;
JButton but3;
JButton but4;
JButton but5;
JButton but6;
JButton but7;
JButton but8;
JButton but9;
JButton but0;
JButton addition;
JButton subtraktion;
JButton division;
JButton multiplikation;
JButton gleich;
JPanel numpan;
JTextField display;
String displayString;
char operator;
int operand;
public Rechner_Frame(){
getContentPane().setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
//Einrichten der Zahlen-Buttons
but1=new JButton("1");
but2=new JButton("2");
but3=new JButton("3");
but4=new JButton("4");
but5=new JButton("5");
but6=new JButton("6");
but7=new JButton("7");
but8=new JButton("8");
but9=new JButton("9");
but0=new JButton("0");
addition=new JButton("+");
subtraktion=new JButton("-");
division=new JButton("/");
multiplikation= new JButton("*");
gleich=new JButton("=");
//Einrichten des Displays
displayString=("0");
display=new JTextField(displayString);
//Einrichten des Zahlen-Panels
numpan=new JPanel();
numpan.setLayout(new GridLayout(5,3));
numpan.add(but7);
numpan.add(but8);
numpan.add(but9);
numpan.add(but4);
numpan.add(but5);
numpan.add(but6);
numpan.add(but1);
numpan.add(but2);
numpan.add(but3);
numpan.add(but0);
numpan.add(addition);
numpan.add(subtraktion);
numpan.add(division);
numpan.add(multiplikation);
numpan.add(gleich);
getContentPane().add(display, BorderLayout.NORTH);
getContentPane().add(numpan, BorderLayout.CENTER);
//Ereignisbehandlung der Buttons
but1.addActionListener(this);
but2.addActionListener(this);
but3.addActionListener(this);
but4.addActionListener(this);
but5.addActionListener(this);
but6.addActionListener(this);
but7.addActionListener(this);
but8.addActionListener(this);
but9.addActionListener(this);
but0.addActionListener(this);
addition.addActionListener(this);
subtraktion.addActionListener(this);
division.addActionListener(this);
multiplikation.addActionListener(this);
gleich.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(display.getText().equals("0")){
displayString="";
display.setText(displayString);
}
//Implementierung der Ereignisabfrage für die Zahleingabe
if(e.getSource()==but1||
e.getSource()==but2||
e.getSource()==but3||
e.getSource()==but4||
e.getSource()==but5||
e.getSource()==but6||
e.getSource()==but7||
e.getSource()==but8||
e.getSource()==but9||
e.getSource()==but0){
displayString=displayString+e.getActionCommand();
display.setText(displayString);
}
if(e.getSource()==addition||
e.getSource()==subtraktion||
e.getSource()==multiplikation||
e.getSource()==division||
e.getSource()==gleich){
switch(operator){
case'+': displayString=(String.valueOf(operand + Integer.parseInt(display.getText())));
display.setText(displayString);
break;
case'-': displayString=(String.valueOf(operand - Integer.parseInt(display.getText())));
display.setText(displayString);
break;
case'*': displayString=(String.valueOf(operand * Integer.parseInt(display.getText())));
display.setText(displayString);
break;
case'/': displayString=(String.valueOf(operand / Integer.parseInt(display.getText())));
display.setText(displayString);
break;
}
}
if(e.getSource()==addition){
operand=Integer.parseInt(display.getText());
operator='+';
displayString="";
}
if(e.getSource()==subtraktion){
operand=Integer.parseInt(display.getText());
operator='-';
displayString="";
}
if(e.getSource()==division){
operand=Integer.parseInt(display.getText());
operator='/';
displayString="";
}
if(e.getSource()==multiplikation){
operand=Integer.parseInt(display.getText());
operator='*';
displayString="";
}
if(e.getSource()==gleich){
if(operator=='+'||operator=='-'||operator=='/'||operator=='*'){
operator='0';
}
}
}
}