Ich möchte einen Übersetzter programmieren, der z.B. deutsche in englische wörter übersetzt. Dazu habe ich folgende Quelltexte geschrieben:
Der Frame und der ActionListener des Buttons:
Der Übersetzer:
Die Wörter sind in der Datei Wörterbuch.dat:
gehen go
spielen play
rennen run
Wenn ich das Programm starte, etwas in dem Textfeld eingebe und auf den Button klicke kommt diese Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at übersetzer.ÜbersetzerFrame$MyListener.actionPerformed(ÜbersetzerFrame.java:86)
at java.awt.Button.processActionEvent(Button.java:409)
at java.awt.Button.processEvent(Button.java:377)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Ich hoffe ihr wisst, wie ich das Problem lösen kann, ich kann Java noch nicht so gut.
Java:
package übersetzer;
public class Übersetzer {
public static void main(String[] args) {
ÜbersetzerFrame übersetzer = new ÜbersetzerFrame();
}
}
Der Frame und der ActionListener des Buttons:
Java:
package übersetzer;
import java.awt.*;
import java.awt.event.*;
public class ÜbersetzerFrame extends Frame {
private Label überschrift;
private Label ausgabe;
private TextField eingabe;
private Button bestätigen;
private String text;
private Translator translator;
ÜbersetzerFrame() {
super("ÜbersetzerFrame");
this.setLayout(null);
überschrift = new Label("Geben sie hier den Text ein:");
ausgabe = new Label();
eingabe = new TextField();
bestätigen = new Button("OK");
this.add(überschrift, null);
this.add(eingabe, null);
this.add(ausgabe, null);
this.add(bestätigen, null);
überschrift.setBounds(20, 40, 200, 20);
eingabe.setBounds(20, 70, 1400, 20);
bestätigen.setBounds(70, 100, 50, 20);
ausgabe.setBounds(20, 130, 1400, 20);
bestätigen.addActionListener(new MyListener());
this.setSize(1440, 300);
this.setVisible(true);
}
public void setAusgabe(Label ausgabe) {
this.ausgabe = ausgabe;
}
public TextField getEingabe() {
return eingabe;
}
public Label getAusgabe() {
return ausgabe;
}
public void setEingabe(TextField eingabe) {
this.eingabe = eingabe;
}
class MyListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == bestätigen) {
text = getEingabe().getText();
getAusgabe().setText(translator.übersetze(text));
}
}
}
}
Der Übersetzer:
Java:
package übersetzer;
import java.io.*;
import java.util.*;
import java.util.logging.*;
public class Translator {
private String suchwort;
public Translator() {
}
public String übersetze(String suchworte) {
this.suchwort = suchwort;
System.out.println("übersetze");
String ausgabe = suchwort;
try {
BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\Markus\\Documents\\NetBeansProjects\\Übersetzer\\src\\übersetzer\\Wörterbuch.dat"));
try {
while ((suchwort = reader.readLine()) != null) {
StringTokenizer tokenizer = new StringTokenizer(suchwort, " ");
if (tokenizer.nextToken() == suchwort) {
ausgabe = tokenizer.nextToken();
}
}
} catch (IOException ex) {
Logger.getLogger(Translator.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Translator.class.getName()).log(Level.SEVERE, null, ex);
}
return ausgabe;
}
}
Die Wörter sind in der Datei Wörterbuch.dat:
gehen go
spielen play
rennen run
Wenn ich das Programm starte, etwas in dem Textfeld eingebe und auf den Button klicke kommt diese Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at übersetzer.ÜbersetzerFrame$MyListener.actionPerformed(ÜbersetzerFrame.java:86)
at java.awt.Button.processActionEvent(Button.java:409)
at java.awt.Button.processEvent(Button.java:377)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Ich hoffe ihr wisst, wie ich das Problem lösen kann, ich kann Java noch nicht so gut.