import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JTextArea; import java.awt.Font; import java.awt.Color; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Rechner extends JFrame { /* constants for operations */ static final int PLUS =0; static final int MINUS =1; static final int MULTIPLICATION =2; static final int DIVISION =3; private JPanel contentPane; private JTextField operand; private JTextField ergebnis; private JTextArea verlauf; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Rechner frame = new Rechner(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Rechner() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 651, 431); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JButton clear = new JButton("clear"); clear.setBounds(488, 268, 89, 23); contentPane.add(clear); JButton plus = new JButton("+"); plus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { doOperation(Rechner.PLUS); } }); plus.setBounds(371, 268, 89, 23); contentPane.add(plus); JButton minus = new JButton("-"); minus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { doOperation(Rechner.MINUS); } }); minus.setBounds(371, 294, 89, 23); contentPane.add(minus); JButton mul = new JButton("*"); mul.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { doOperation(Rechner.MULTIPLICATION); } }); mul.setBounds(371, 320, 89, 23); contentPane.add(mul); JButton div = new JButton("/"); div.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { doOperation(Rechner.DIVISION); } }); div.setBounds(371, 345, 89, 23); contentPane.add(div); operand = new JTextField(); operand.setBounds(202, 269, 127, 20); contentPane.add(operand); operand.setColumns(10); JLabel lblOperand = new JLabel("Operand"); lblOperand.setFont(new Font("Tahoma", Font.BOLD, 14)); lblOperand.setBounds(47, 268, 113, 32); contentPane.add(lblOperand); JLabel lblVerlauf = new JLabel("Verlauf:"); lblVerlauf.setFont(new Font("Tahoma", Font.BOLD, 14)); lblVerlauf.setBounds(47, 38, 113, 77); contentPane.add(lblVerlauf); JLabel lblErgebnis = new JLabel("Ergebnis:"); lblErgebnis.setFont(new Font("Tahoma", Font.BOLD, 14)); lblErgebnis.setBounds(47, 217, 113, 58); contentPane.add(lblErgebnis); ergebnis = new JTextField(); ergebnis.setColumns(10); ergebnis.setBounds(202, 238, 127, 20); contentPane.add(ergebnis); verlauf = new JTextArea(); verlauf.setBounds(202, 38, 375, 189); contentPane.add(verlauf); } private void doOperation(int type) { try { if ("".equals(operand.getText())) { verlauf.setText(verlauf.getText()+"\nKeine Zahl eingeben!\n"); operand.setBackground(Color.RED); return; } if ("".equals(ergebnis.getText())) { ergebnis.setText("0"); } operand.setBackground(Color.WHITE); double z= Double.parseDouble(operand.getText()); double e= Double.parseDouble(ergebnis.getText()); switch (type) { case Rechner.PLUS : { verlauf.setText(verlauf.getText()+"+"+operand.getText()+"\n"); ergebnis.setText(String.valueOf(e+z)); break; } case Rechner.MINUS : { verlauf.setText(verlauf.getText()+"-"+operand.getText()+"\n"); ergebnis.setText(new Double(e-z).toString()); break; } case Rechner.DIVISION : { verlauf.setText(verlauf.getText()+"/"+operand.getText()+"\n"); ergebnis.setText(String.valueOf(e/z)); break; } case Rechner.MULTIPLICATION : { verlauf.setText(verlauf.getText()+"*"+operand.getText()+"\n"); ergebnis.setText(new Double(e*z).toString()); break; } } operand.setText(""); } catch (Exception e) { verlauf.setText("Fehler:"+e.toString()+"\n"); operand.setText("0"); } } }