Heyho,
Ich starte meine Java Form, doch diese ist einfach nur Weiß, ohne Objekte...
Quellcode:
Und die Kasse Empfangen:
Wenn ich die Zeile:[c]Empfangen.listen(window);[/c] auskommentiere funktioniert die Form wieder, aber das schreiben nicht...
Hat jemand nen Lösungsansatz? 🙂
Vielen Dank im Vorraus 🙂
Ich starte meine Java Form, doch diese ist einfach nur Weiß, ohne Objekte...
Quellcode:
Java:
private static final long serialVersionUID = 1L;
public JFrame frmLanChat;
public JTextArea ta_schreiben;
public JTextField tf_nick;
public JTextArea ta_lesen;
public JTextField txt_nick;
/**
* Startet die Anwendung.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Chat window = new Chat();
window.frmLanChat.setVisible(true);
Empfangen.listen(window);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Chat() {
Empfangen empf = new Empfangen();
// Netzwerk-Gruppe
final String NETWORK_GROUP = "231.0.0.1";
// Netzwerk-Gruppen Port
final int NETWORK_GROUP_PORT = 3337;
// Client-Port
final int CLIENT_MULTICAST_PORT = 3336;
// Nachrichten-Codierung
final String TEXT_ENCODING = "UTF8";
frmLanChat = new JFrame();
frmLanChat.setIconImage(Toolkit.getDefaultToolkit().getImage(Chat.class.getResource("/javax/swing/plaf/metal/icons/ocean/computer.gif")));
frmLanChat.setResizable(false);
frmLanChat.setTitle("Lan Chat");
frmLanChat.getContentPane().setBackground(Color.LIGHT_GRAY);
frmLanChat.setBounds(100, 100, 596, 634);
frmLanChat.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmLanChat.getContentPane().setLayout(null);
ta_lesen = new JTextArea();
ta_lesen.setBounds(39, 49, 371, 411);
frmLanChat.getContentPane().add(ta_lesen);
ta_schreiben = new JTextArea();
ta_schreiben.setBounds(39, 471, 371, 101);
frmLanChat.getContentPane().add(ta_schreiben);
JButton btn_Nick = new JButton("Nickname setzen");
btn_Nick.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String nickname = txt_nick.getText();
}
});
btn_Nick.setBounds(237, 10, 173, 23);
frmLanChat.getContentPane().add(btn_Nick);
JButton btn_senden = new JButton("Senden");
btn_senden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sende_text = ta_schreiben.getText();
ta_schreiben.setText(" ");
String nickname = txt_nick.getText();
try {
MulticastSocket socket = new MulticastSocket(
CLIENT_MULTICAST_PORT);
byte[] message = sende_text.getBytes(TEXT_ENCODING);
// Nachricht an Gruppe senden
socket.send(new DatagramPacket(message, message.length,
InetAddress.getByName(NETWORK_GROUP),
NETWORK_GROUP_PORT));
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
btn_senden.setBounds(420, 472, 129, 23);
frmLanChat.getContentPane().add(btn_senden);
txt_nick = new JTextField();
txt_nick.setBounds(39, 11, 173, 20);
frmLanChat.getContentPane().add(txt_nick);
txt_nick.setColumns(10);
final String liste[] = {":)", ":(", ":P", ":D", ":*", ":/"};
final JComboBox smileybox = new JComboBox(liste);
smileybox.setModel(new DefaultComboBoxModel(new String[] {":) ", ":( ", ":P ", ":D ", ":* ", ":/ "}));
smileybox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int auswahl = smileybox.getSelectedIndex();
ta_schreiben.setText(ta_schreiben.getText() +liste[auswahl]);
}
});
smileybox.setToolTipText("Smileys");
smileybox.setBounds(420, 506, 129, 20);
frmLanChat.getContentPane().add(smileybox);
}
}
Und die Kasse Empfangen:
Java:
package chat;
import java.io.*;
import java.net.*;
import java.awt.event.*;
import chat.*;
public class Empfangen {
public static void listen(Chat window) {
// Netzwerk-Gruppe erstellen
String NETWORK_GROUP = "231.0.0.1";
// Port der Netzwerkgruppe
int NETWORK_GROUP_PORT = 3337;
// Nachrichten-Codierung
String TEXT_ENCODING = "UTF8";
InetAddress group;
MulticastSocket socket;
try {
// Gruppe anlegen
group = InetAddress.getByName(NETWORK_GROUP);
socket = new MulticastSocket(NETWORK_GROUP_PORT);
// Gruppe beitreten
socket.joinGroup(group);
byte[] bytes = new byte[65536];
DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
while (true) {
// Auf Nachrichten warten
socket.receive(packet);
final String message = new String(packet.getData(), 0,
packet.getLength(), TEXT_ENCODING);
System.out.println(message);
window.ta_lesen.append(message+"\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Wenn ich die Zeile:[c]Empfangen.listen(window);[/c] auskommentiere funktioniert die Form wieder, aber das schreiben nicht...
Hat jemand nen Lösungsansatz? 🙂
Vielen Dank im Vorraus 🙂