U
Utos
Gast
Ich habe zwei Probleme mit meinem Taschenrechner
1) Mein Clear Button funktioniert nicht, ich weiß nicht genau, wie ich den bauen soll
2) Mein Minus funktioniert nicht, das fügt immer nur das Minus ein, als wenn es ein Vorzeichen wäre
(Vielleicht start=true oder start=false irgendwo falsch gesetzt?)
Ich bin leider mit den Notizen noch nicht ganz fertig, wenn ihr eine Frage habt, dann fragt ruhig
Besonders suche ich Hilfe beim Clear Button, das wär super :toll:
1) Mein Clear Button funktioniert nicht, ich weiß nicht genau, wie ich den bauen soll
2) Mein Minus funktioniert nicht, das fügt immer nur das Minus ein, als wenn es ein Vorzeichen wäre
(Vielleicht start=true oder start=false irgendwo falsch gesetzt?)
Ich bin leider mit den Notizen noch nicht ganz fertig, wenn ihr eine Frage habt, dann fragt ruhig
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* @Title Informatik Projekt 2010
* @author Henning und Gabriel
*
*/
public class Calculator {
public static void main(String[] args)
{
CalculatorFrame frame = new CalculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class CalculatorFrame extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
public CalculatorFrame()
{
super("Taschenrechner"); // Taschenrechner benennen
CalculatorPanel panel = new CalculatorPanel();
add(panel);
pack();
}
}
class CalculatorPanel extends JPanel
{
private static final long serialVersionUID = 1L;
public CalculatorPanel()
{
setLayout(new BorderLayout());
result = 0;
lastCommand = "=";
start = true;
display = new JLabel("0", SwingConstants.CENTER); // Ausgabezeile zeigen und Text in die Mitte verschieben
display.setEnabled(false);
add(display, BorderLayout.NORTH); // Ausgabezeile im oberen Bereich anzeigen
ActionListener insert = new InsertAction(); // Später gebraucht um Zahlen einzusetzen
ActionListener command = new CommandAction(); // Später gebraucht um Commands entgegenzunehmen
panel = new JPanel(); // Tachenrechnerknöpfe werden erstellt
panel.setLayout(new GridLayout(5, 4)); // Tachenrechnerknöpfe werden erstellt
addButton("C", command);
addButton("7", insert);
addButton("8", insert);
addButton("9", insert);
addButton("/", command);
addButton("4", insert);
addButton("5", insert);
addButton("6", insert);
addButton("*", command);
addButton("1", insert);
addButton("2", insert);
addButton("3", insert);
addButton("-", command);
addButton("0", insert);
addButton(".", insert);
addButton("=", command);
addButton("+", command);
add(panel, BorderLayout.CENTER);
}
private void addButton(String label, ActionListener listener)
{
JButton button = new JButton(label);
button.addActionListener(listener);
panel.add(button);
}
private class InsertAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String input = event.getActionCommand();
if (start)
{
display.setText("");
start = false;
}
display.setText(display.getText() + input);
}
}
/**
* Diese Aktion führt den mit der Taste verbundenen
* Befehl aus.
*/
private class CommandAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.out.println("actionPerformed\t"+event.getActionCommand());
String command = event.getActionCommand();
// Füge den Präfix "-" an den String an wenn
// es sich um den ersten Befehl handelt (negative Zahl)
if (start)
{
if (command.equals("-"))
{
display.setText(command);
start = false;
}
else
lastCommand = command;
}
else
{
// Berechnung ausführen
calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
}
}
}
/**
* Führt die anstehenden Berechnungen aus.
* @param x der mit dem vorherigen Ergebnis zu berechnende Wert
*/
public void calculate(double x)
{
if (lastCommand.equals("+")) result += x; // Berechnungen ausführen
else if (lastCommand.equals("-")) result -= x;
else if (lastCommand.equals("*")) result *= x;
else if (lastCommand.equals("/")) result /= x;
else if (lastCommand.equals("=")) result = x;
else if (lastCommand.equals("C")) {result=0; start=false;}
System.out.println("calculate\t"+lastCommand+"\t"+result);
display.setText("" + result);
}
private JLabel display; //Variablen zuweisen
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
}
Besonders suche ich Hilfe beim Clear Button, das wär super :toll: