Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich hab mir ein ChatClientApplet von meinem alten ChatClient in einem JFrame aus zusammengebastelt.
Ich erzeuge mir in der Appletklasse ein Objekt von sich selbst und hab mir eine Funktion SetMessage geschrieben.
Das Lesen der eingehenden Nachrichten übernimmt ein Thread. Beim starten des Thread übergebe ich dazu das Objekt was ich mir erzeugt habe. Wenn eine Nachricht eingeht (was klappt) möchte ich diese dann im Applet ausgeben.
Daher schreib ich im Thread "applet.setMessage(string);" Nur gibt er mir die Nachricht nicht aus. In der Konsole kommt die Ausgabe:
Code:
Exception in thread "Thread-5" java.lang.NullPointerException
at chatclient.ChatClientApplet.SetMessage(ChatClientApplet.java:56)
at chatclient.ClientThread.run(ChatClientApplet.java:714)
Das bedeutet, dass du in deinem "Thread-5" versuchst, auf ein "null"-Objekt zuzugreifen.
Ich kenne deinen Code nicht, darum kann ich dir momentan nicht weiterhelfen. Poste mal die entsprechenden Quellcodeabschnitte.
Das ist ein Teil der Appletklasse (Deklaration des Applet-Objekts):
Code:
public class ChatClientApplet extends javax.swing.JApplet {
static Socket s;
static ObjectOutputStream oos;
static ChatClientApplet applet = new ChatClientApplet();
Das ist der Code von dem Button Verbinden - der die Verbindung zum Server aufbaut und dann den Thread startet:
Code:
private void jButton_verbindenActionPerformed(java.awt.event.ActionEvent evt) {
boolean alles_ok=false;
try{
s = new Socket(this.jTextField_server_ip.getText().trim(),Integer.valueOf(this.jTextField_server_port.getText().trim()).intValue());
oos = new ObjectOutputStream(s.getOutputStream());
new ClientThread(s,applet).start();
alles_ok=true;
}
catch(IOException e){
SetFehler(); //Ausgabe beim Login, wenn ein Fehler auftritt
}
if(alles_ok==true){
this.jButton_verbinden.setEnabled(false);
this.jButton_trennen.setEnabled(true);
this.jTextField_server_ip.setEditable(false);
this.jTextField_server_port.setEditable(false);
}
}
Das ist dann ein Teil des Thread. Unten ist dann zu sehen, das die Empfangene Nachricht an das Applet übergeben werden soll, um sie da auszugeben.
Im JFrame klappte das alles wunderbar. Nur jetzt nicht mehr im Applet....