import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import java.lang.invoke.LambdaConversionException;
import java.util.regex.Pattern;
import java.awt.event.ActionEvent;
import java.awt.Color;
import java.awt.Font;
import java.awt.Window;
import java.awt.Window.Type;
import java.awt.SystemColor;
import javax.swing.UIManager;
import javax.swing.JSeparator;
import javax.swing.JToolBar;
import javax.swing.JComboBox;
import java.awt.Panel;
import javax.swing.JLabel;
import javax.swing.JEditorPane;
import javax.swing.DropMode;
import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.JFormattedTextField;
import javax.swing.SwingConstants;
public class Calculator {
private JFrame frmRechner;
private JButton btnMinus;
private JButton btnMal;
private JButton btnTeilen;
private JButton btnErgebnis;
private JButton btnEins;
private JButton btnZwei;
private JButton btnDrei;
private JButton btnVier;
private JButton btnFuenf;
private JButton btnSechs;
private JButton btnSieben;
private JButton btnAcht;
private JButton btnNeun;
private JButton btnNull;
private JButton btnBack;
private JLabel labBack;
//Variablen
double num;
String a;
int calc;
String strOp;
private JLabel labFront;
public Calculator() {
initialize();
}
//Sollte letzten 2 Eingaben ausgeben, nicht wirklich im Gebrauch
public void Rechnen() {
double ergGleich;
switch(calc) {
case 1:
ergGleich = num + Double.parseDouble(labFront.getText());
labFront.setText(Double.toString(ergGleich));
labBack.setText("");
break;
case 2:
ergGleich = num - Double.parseDouble(labFront.getText());
labFront.setText(Double.toString(ergGleich));
labBack.setText("");
break;
case 3:
ergGleich = num * Double.parseDouble(labFront.getText());
labFront.setText(Double.toString(ergGleich));
labBack.setText("");
break;
case 4:
ergGleich = num / Double.parseDouble(labFront.getText());
labFront.setText(Double.toString(ergGleich));
labBack.setText("");
break;
}
}
//Wenn Zahl gedrückt
public void NumberPressed(String i){
labFront.setText(labFront.getText() + i);
}
//Wenn Operator gedrückt
public void OperatorPressed(String op) {
double numb1 = 0, numb2, erg;
numb2 = Double.parseDouble(labFront.getText()); //speichert Eingabe in Variable num2
if(labBack.getText().endsWith("+")) { //Prüft ob ein Operator schon eingegeben ist
numb1 += numb2; //Wert soll, wenn Operator schon eingegeben ist, an numb1 gegeben werden
numb2 = Double.parseDouble(labFront.getText()); //Hier sollte dann 2.Zahl eingelesen werden
erg = numb1 + numb2; //hier sollen dann Zahlen (in dem Fall addiert werden)
labFront.setText(Double.toString(erg)); //Ergebnis wird ausgegeben
labBack.setText(labBack.getText() + numb2 + op); //Zahl mit Operator in Hintergrund geschrieben
}
else { //Soll passieren wenn noch noch kein Operator vorher eingeben wurde
labBack.setText(labBack.getText() + numb2 + op);
labFront.setText("");
}
}
private void initialize() {
frmRechner = new JFrame();
frmRechner.getContentPane().setForeground(new Color(0, 0, 0));
frmRechner.setBackground(SystemColor.controlHighlight);
frmRechner.setForeground(Color.LIGHT_GRAY);
frmRechner.setTitle("Rechner");
frmRechner.getContentPane().setBackground(UIManager.getColor("menu"));
frmRechner.setBounds(100, 100, 320, 510);
frmRechner.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmRechner.getContentPane().setLayout(null);
//Knopf addieren (+)
JButton btnAddieren = new JButton("+");
btnAddieren.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnAddieren.setBackground(SystemColor.controlHighlight);
btnAddieren.setForeground(Color.BLACK);
btnAddieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
calc = 1;
OperatorPressed(btnAddieren.getText());
}
});
btnAddieren.setBounds(220, 350, 70, 40);
frmRechner.getContentPane().add(btnAddieren);
//Knopf Subtrahieren (-)
btnMinus = new JButton("-");
btnMinus.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnMinus.setBackground(SystemColor.controlHighlight);
btnMinus.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calc = 2;
OperatorPressed(btnMinus.getText());
}
});
btnMinus.setBounds(220, 310, 70, 40);
frmRechner.getContentPane().add(btnMinus);
//Knopf Multiplizieren (*)
btnMal = new JButton("*");
btnMal.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnMal.setBackground(SystemColor.controlHighlight);
btnMal.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
strOp = btnMal.getText();
OperatorPressed(btnMal.getText());
}
});
btnMal.setBounds(220, 270, 70, 40);
frmRechner.getContentPane().add(btnMal);
//Knopf Dividieren (/)
btnTeilen = new JButton("/");
btnTeilen.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnTeilen.setBackground(SystemColor.controlHighlight);
btnTeilen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
strOp = btnTeilen.getText();
OperatorPressed(btnTeilen.getText());
}
});
btnTeilen.setBounds(220, 230, 70, 40);
frmRechner.getContentPane().add(btnTeilen);
//Knopf Ergebnis (=)
btnErgebnis = new JButton("=");
btnErgebnis.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Rechnen();
}
});
btnErgebnis.setBackground(SystemColor.controlHighlight);
btnErgebnis.setBounds(220, 390, 70, 40);
frmRechner.getContentPane().add(btnErgebnis);
//Knopf Eins (1)
btnEins = new JButton("1");
btnEins.setForeground(new Color(0, 0, 0));
btnEins.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
NumberPressed(btnEins.getText());
}
});
btnEins.setFont(new Font("Tahoma", Font.BOLD, 20));
btnEins.setBackground(SystemColor.text);
btnEins.setBounds(10, 350, 70, 40);
frmRechner.getContentPane().add(btnEins);
btnZwei = new JButton("2");
btnZwei.setBounds(80, 350, 70, 40);
frmRechner.getContentPane().add(btnZwei);
btnZwei.setForeground(new Color(0, 0, 0));
btnZwei.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
NumberPressed(btnZwei.getText());
}
});
btnZwei.setFont(new Font("Tahoma", Font.BOLD, 20));
btnZwei.setBackground(SystemColor.text);
//Knopf Drei (3)
btnDrei = new JButton("3");
btnDrei.setForeground(new Color(0, 0, 0));
btnDrei.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
NumberPressed(btnDrei.getText());
}
});
btnDrei.setFont(new Font("Tahoma", Font.BOLD, 20));
btnDrei.setBackground(SystemColor.text);
btnDrei.setBounds(150, 350, 70, 40);
frmRechner.getContentPane().add(btnDrei);
//Knopf Vier (4)
btnVier = new JButton("4");
btnVier.setForeground(new Color(0, 0, 0));
btnVier.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
NumberPressed(btnVier.getText());
}
});
btnVier.setFont(new Font("Tahoma", Font.BOLD, 20));
btnVier.setBackground(SystemColor.text);
btnVier.setBounds(10, 310, 70, 40);
frmRechner.getContentPane().add(btnVier);
//Knopf Fünf (5)
btnFuenf = new JButton("5");
btnFuenf.setForeground(new Color(0, 0, 0));
btnFuenf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
NumberPressed(btnFuenf.getText());
}
});
btnFuenf.setFont(new Font("Tahoma", Font.BOLD, 20));
btnFuenf.setBackground(SystemColor.text);
btnFuenf.setBounds(80, 310, 70, 40);
frmRechner.getContentPane().add(btnFuenf);
//Knopf Sechs (6)
btnSechs = new JButton("6");
btnSechs.setForeground(new Color(0, 0, 0));
btnSechs.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
NumberPressed(btnSechs.getText());
}
});
btnSechs.setFont(new Font("Tahoma", Font.BOLD, 20));
btnSechs.setBackground(SystemColor.text);
btnSechs.setBounds(150, 310, 70, 40);
frmRechner.getContentPane().add(btnSechs);
//Knopf Sieben
btnSieben = new JButton("7");
btnSieben.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
NumberPressed(btnSieben.getText());
}
});
btnSieben.setForeground(new Color(0, 0, 0));
btnSieben.setFont(new Font("Tahoma", Font.BOLD, 20));
btnSieben.setBackground(SystemColor.text);
btnSieben.setBounds(10, 270, 70, 40);
frmRechner.getContentPane().add(btnSieben);
//Knopf Acht (8)
btnAcht = new JButton("8");
btnAcht.setForeground(new Color(0, 0, 0));
btnAcht.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
NumberPressed(btnAcht.getText());
}
});
btnAcht.setFont(new Font("Tahoma", Font.BOLD, 20));
btnAcht.setBackground(SystemColor.text);
btnAcht.setBounds(80, 270, 70, 40);
frmRechner.getContentPane().add(btnAcht);
//Knopf Neun (9)
btnNeun = new JButton("9");
btnNeun.setForeground(new Color(0, 0, 0));
btnNeun.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
NumberPressed(btnNeun.getText());
}
});
btnNeun.setFont(new Font("Tahoma", Font.BOLD, 20));
btnNeun.setBackground(SystemColor.text);
btnNeun.setBounds(150, 270, 70, 40);
frmRechner.getContentPane().add(btnNeun);
//Knopf Null (0)
btnNull = new JButton("0");
btnNull.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
NumberPressed(btnNull.getText());
}
});
btnNull.setFont(new Font("Tahoma", Font.BOLD, 20));
btnNull.setBackground(SystemColor.text);
btnNull.setBounds(80, 390, 70, 40);
frmRechner.getContentPane().add(btnNull);
//Knopf Clear
JButton btnClear = new JButton("C");
btnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
labBack.setText("");
labFront.setText("");
}
});
btnClear.setForeground(Color.BLACK);
btnClear.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnClear.setBackground(SystemColor.controlHighlight);
btnClear.setBounds(80, 230, 70, 40);
frmRechner.getContentPane().add(btnClear);
btnBack = new JButton("<--");
btnBack.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int lenght = labFront.getText().length();
int number = labFront.getText().length() - 1;
String store;
if(lenght > 0) {
StringBuilder back = new StringBuilder(labFront.getText());
back.deleteCharAt(number); //Schrittweise -1
store = back.toString(); //,,back'' muss wieder in String gewandelt werden
labFront.setText(store); //gibt ,,store'' wieder in Text
}
}
});
btnBack.setForeground(Color.BLACK);
btnBack.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnBack.setBackground(SystemColor.controlHighlight);
btnBack.setBounds(150, 230, 70, 40);
frmRechner.getContentPane().add(btnBack);
//Knopf Vorzeichen ändern (+/-)
JButton button = new JButton("+/-");
button.setBackground(SystemColor.controlHighlight);
button.setBounds(10, 390, 70, 40);
frmRechner.getContentPane().add(button);
//Knopf Komma setzten (,)
JButton btnKomma = new JButton(",");
btnKomma.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
labFront.setText(labFront.getText() + ".");
}
});
btnKomma.setForeground(Color.BLACK);
btnKomma.setFont(new Font("Tahoma", Font.BOLD, 15));
btnKomma.setBackground(SystemColor.controlHighlight);
btnKomma.setBounds(150, 390, 70, 40);
frmRechner.getContentPane().add(btnKomma);
//Knopf ClearEntry löschen letzter Eingabe(CE)
JButton btnClearEntry = new JButton("CE");
btnClearEntry.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
labFront.setText("");
}
});
btnClearEntry.setForeground(Color.BLACK);
btnClearEntry.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnClearEntry.setBackground(SystemColor.controlHighlight);
btnClearEntry.setBounds(10, 230, 70, 40);
frmRechner.getContentPane().add(btnClearEntry);
labBack = new JLabel("");
labBack.setFont(new Font("Tahoma", Font.PLAIN, 12));
labBack.setVerticalAlignment(SwingConstants.TOP);
labBack.setHorizontalAlignment(SwingConstants.RIGHT);
labBack.setBounds(0, 54, 304, 67);
frmRechner.getContentPane().add(labBack);
labFront = new JLabel("");
labFront.setFont(new Font("Tahoma", Font.PLAIN, 18));
labFront.setBackground(SystemColor.info);
labFront.setHorizontalAlignment(SwingConstants.RIGHT);
labFront.setBounds(0, 70, 304, 104);
frmRechner.getContentPane().add(labFront);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Calculator window = new Calculator();
window.frmRechner.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}