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