Hab mich mal durch Java 2 für Dummies durchgeprügelt und danach versucht einen Taschenrechner zu basteln, es funzt eigentlich alles, nur der Klick auf ein anderes Zeichen als einer Zahl führt zu Fehlern.
2 Fehlermeldungen:
1. offnet sich ein neuer Tab mit folgendem:
Wenn ich auf Attach Source klicke kommt:
Das Kapiere ich überhaupt nicht, da ich rt.jar nirgendsverwende....
2. kommt in der Konsole folgende Fehlermeldung:
Hier ist der Code der Klasse Taschenrechner
Hier der Code vom TaschenrechnerPanel
Ich hab das ganze Projekt für Eclipse als Zip angehängt, um den edlen Helden, von denen ich mir Hilfe erhoffe die Arbeit zu erleichtern :toll:
Danke für die Antworten im voraus.
Mit freundlichem Gruße.
2 Fehlermeldungen:
1. offnet sich ein neuer Tab mit folgendem:

Wenn ich auf Attach Source klicke kommt:

Das Kapiere ich überhaupt nicht, da ich rt.jar nirgendsverwende....
2. kommt in der Konsole folgende Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at taschenrechner.TaschenrechnerPanel.calculate(TaschenrechnerPanel.java:107)
at taschenrechner.TaschenrechnerPanel$BefehlsAktion.actionPerformed(TaschenrechnerPanel.java:98)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Hier ist der Code der Klasse Taschenrechner
Java:
package taschenrechner;
import javax.swing.*;
public class Taschenrechner
{
static private JFrame Fenster = new JFrame();
static private TaschenrechnerPanel Panel = new TaschenrechnerPanel();
public static void main(String[] args)
{
Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Fenster.setVisible(true);
Fenster.setTitle("Einfacher Gammeltaschenrechner");
Fenster.add(Panel);
Fenster.pack();
}
}
Hier der Code vom TaschenrechnerPanel
Java:
package taschenrechner;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TaschenrechnerPanel extends JPanel
{
private JButton Display = new JButton("0");
private JPanel Tastenkonsole = new JPanel();
private JButton Knopf;
private ActionListener Eingabe = new EingabeAktion();
private ActionListener Befehl = new BefehlsAktion();
private double Ergebnis;
private String letzterBefehl;
private boolean erster = true;
public TaschenrechnerPanel()
{
setLayout(new BorderLayout());
Display.setEnabled(false);
add(Display, BorderLayout.NORTH);
Tastenkonsole.setLayout(new GridLayout(4, 4));
add(Tastenkonsole, BorderLayout.CENTER);
Tastenkonsole.setLayout(new GridLayout(4,4));
neuerKnopf("7", Eingabe);
neuerKnopf("8", Eingabe);
neuerKnopf("9", Eingabe);
neuerKnopf("/", Befehl);
neuerKnopf("4", Eingabe);
neuerKnopf("5", Eingabe);
neuerKnopf("6", Eingabe);
neuerKnopf("*", Befehl);
neuerKnopf("1", Eingabe);
neuerKnopf("2", Eingabe);
neuerKnopf("3", Eingabe);
neuerKnopf("-", Befehl);
neuerKnopf("0", Eingabe);
neuerKnopf(".", Eingabe);
neuerKnopf("=", Befehl);
neuerKnopf("+", Befehl);
}
private void neuerKnopf(String Name, ActionListener listener)
{
Knopf = new JButton(Name);
Knopf.addActionListener(listener);
Tastenkonsole.add(Knopf);
}
private class EingabeAktion implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String input = event.getActionCommand();
if (erster)
{
Display.setText("");
erster = false;
}
Display.setText(Display.getText() + input);
}
}
private class BefehlsAktion implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String command = event.getActionCommand();
if (erster)
{
if (command.equals("-"))
{
Display.setText(command);
erster = false;
}
else
letzterBefehl = command;
}
else
{
calculate(Double.parseDouble(Display.getText()));
letzterBefehl = command;
erster = true;
}
}
}
public void calculate(double x)
{
if (letzterBefehl.equals("+")) Ergebnis += x;
else if (letzterBefehl.equals("-")) Ergebnis -= x;
else if (letzterBefehl.equals("*")) Ergebnis *= x;
else if (letzterBefehl.equals("/")) Ergebnis /= x;
else if (letzterBefehl.equals("=")) Ergebnis = x;
Display.setText("" + Ergebnis);
}
}
Ich hab das ganze Projekt für Eclipse als Zip angehängt, um den edlen Helden, von denen ich mir Hilfe erhoffe die Arbeit zu erleichtern :toll:
Danke für die Antworten im voraus.
Mit freundlichem Gruße.
Zuletzt bearbeitet: