# JavaChat



## Agent159 (11. Mai 2006)

Hi, ich habe mir mal den Quelltext von dem  Beispielchat von java.seite.net ausprobiert.
Diesen wollte ich jedoch in einem eigenem Frame haben.
Das habe ich auch noch schnell hinbekommen, doch leider versendet er nun keine Texte mehr, d.h. er reagiert nicht mehr auf die Enter-Taste...


```
import java.net.*;
import java.io.*;
import java.awt.*;
import java.applet.*;

public class chatapplet extends Applet implements Runnable
{
	public Frame f;
	public static final int PORT = 2710;
	Socket socket;
	DataInputStream in;
	PrintStream out;
	TextField inputfield;
	TextArea outputarea;
	Choice choiceChannel;
        List users;
	Thread thread;

	public void init()
	{
f = new Frame("Agent159's knuddeliger Chat");
f.addWindowListener(new java.awt.event.WindowAdapter() {
	public void windowClosing(java.awt.event.WindowEvent e) {
		f.dispose();
							}	});

		inputfield = new TextField();
		outputarea = new TextArea();
                users = new List();
		outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
		outputarea.setEditable(false);
f.add(inputfield);
f.add(outputarea);
f.add(users);
		f.setLayout(new BorderLayout());
		f.add("South", inputfield);
		f.add("Center", outputarea);
                f.add("East", users);
		f.setBackground(Color.lightGray);
		f.setForeground(Color.white);
		inputfield.setBackground(Color.darkGray);
		outputarea.setBackground(Color.darkGray);
		users.setBackground(Color.darkGray);
f.pack();
f.setSize(800,600);
f.show();
}
	public void start()
	{
		try
		{
			socket = new Socket(this.getCodeBase().getHost(), PORT);
			in = new DataInputStream(socket.getInputStream());
			out = new PrintStream(socket.getOutputStream());
			say("Verbindung zum Server aufgenommen...");
		} catch (IOException e)
		{
			this.showStatus(e.toString());
			say("Verbindung zum Server fehlgeschlagen!");
			//System.exit(1);
		}

		if (thread == null)
		{
			thread = new Thread(this);
			thread.setPriority(Thread.MIN_PRIORITY);
			thread.start();
		}
	}


	public void stop()
	{
		try
		{
			socket.close();
		} catch (IOException e)
		{
			this.showStatus(e.toString());
		}

		if ((thread !=null) && thread.isAlive())
		{
			thread.stop();
			thread = null;
		}
	}


	public void run()
	{
		String line;

		try
		{
			while(true)
			{
				line = in.readLine();
				if(line!=null)
					outputarea.appendText(line+'\n' );
			}
		} catch (IOException e) { say("Verbindung zum Server abgebrochen"); }
	}
	public boolean action(Event e, Object what)
	{
		if (e.target==inputfield)
		{
			String inp=(String) e.arg;

			out.println(inp);
			inputfield.setText("");
			return true;
		}

		return false;
	}

	public void say(String msg)
	{
		outputarea.appendText("*** "+msg+" ***\n");
	}
}
```

Wäre echt nett, wenn mir einer helfen könnte.

PS:Bin JavaAnfänger xD (beachte nur des java)


----------



## The_S (12. Mai 2006)

1. Sehe ich keine implementierung eines KeyListeners bzw. ActionListeners welche von nöten ist um auf ein Enter zu reagieren.
2. Warum erbst du von JApplet wenn du sowieso ein JFrame möchtest?
3. Bevor du an einem vorgefertigtem Code rumbastelst, programmier dir sowas lieber von Anfang an selbst. Gibt ein gutes Tutorial in der Java-Insel


----------



## Agent159 (12. Mai 2006)

Wo gibt es denn solch ein Tutorial?

Ich hab auch ma in versch. Büchern in der Bibliothek geguckt, war aber auch nichts drin...


----------



## The_S (13. Mai 2006)

Hier eine Einführung in Netzwerke:

http://www.galileocomputing.de/openbook/javainsel5/javainsel16_000.htm#Xxx999378

wenn du die Basics drauf hast ist es bis zum Chat nicht mehr weit


----------



## Agent159 (13. Mai 2006)

Danke ^^

kannst du mir trotzdem noch sagen, wie das mit dem Event dann richtig funktioniert?


----------



## Agent159 (11. Jun 2006)

Also weiß keiner wie das jetzt geht??


----------



## L-ectron-X (11. Jun 2006)

Hänge an dein TextField einen ActionListener.

```
inputfield.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
      //Code hier hinein schreiben, der beim Drücken der Enter-Taste ausgeführt werden soll
   }
});
```


----------



## Agent159 (15. Jun 2006)

Hey Dankeeeeee
funktioniert super xD

dankeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee


----------

