import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class Chatserver extends JFrame implements ActionListener, KeyListener {
JTextField eingabe = new JTextField();
JEditorPane chatfenster = new JEditorPane();
String chattext;
ServerSocket ss;
Socket s;
PrintWriter aus;
BufferedReader ein;
String eingang;
String ausgang;
public Chatserver() {
super("Chatserver");
setSize(300, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(
(Toolkit.getDefaultToolkit().getScreenSize().width-this.getSize().width) / 2,
(Toolkit.getDefaultToolkit().getScreenSize().height-this.getSize().height) / 2
);
// Look and Feel Stil
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {}
JPanel pane = new JPanel();
//Layout festlegen
GridBagLayout gridbag= new GridBagLayout();
pane.setLayout(gridbag);
GridBagConstraints constraints = new GridBagConstraints();
//Constraints für JLabel festlegen
JLabel ziel = new JLabel("Senden an:", SwingConstants.RIGHT);
constraints.gridx=0;
constraints.gridy=0;
constraints.gridwidth=1;
constraints.gridheight=1;
constraints.weightx=100;
constraints.weighty=0;
constraints.anchor=GridBagConstraints.EAST;
//Constraints auf Layout anwenden, JLabel hinzufügen
gridbag.setConstraints(ziel, constraints);
pane.add(ziel);
//Constraints für Auswahlfeld festlegen
JComboBox target = new JComboBox();
target.addItem("192.168.0.1");
target.addItem("192.168.0.2");
target.setEditable(true);
constraints.gridx=1;
constraints.gridy=0;
constraints.gridwidth=1;
constraints.gridheight=1;
constraints.weightx=0;
constraints.weighty=0;
constraints.fill=GridBagConstraints.BOTH;
//Constraints auf Layout anwenden, JLabel hinzufügen
gridbag.setConstraints(target, constraints);
pane.add(target);
//Constraints für Chatfenster festlegen
chatfenster.setEditable(false);
chatfenster.setContentType("text/html");
JScrollPane scrollpanechat = new JScrollPane(chatfenster, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
constraints.gridx=0;
constraints.gridy=1;
constraints.gridwidth=2;
constraints.gridheight=1;
constraints.weightx=100;
constraints.weighty=96;
constraints.fill=GridBagConstraints.BOTH;
//Constraints auf Layout anwenden, JLabel hinzufügen
gridbag.setConstraints(scrollpanechat, constraints);
pane.add(scrollpanechat);
//Constraints für JLabel Ihre Nachricht festlegen
JLabel ihrenachricht = new JLabel("Ihre Nachricht:", SwingConstants.CENTER);
constraints.gridx=0;
constraints.gridy=2;
constraints.gridwidth=2;
constraints.gridheight=1;
constraints.weightx=100;
constraints.weighty=0;
constraints.anchor=GridBagConstraints.CENTER;
//Constraints auf Layout anwenden, JLabel hinzufügen
gridbag.setConstraints(ihrenachricht, constraints);
pane.add(ihrenachricht);
//Constraints für Textfeldeingabe festlegen
eingabe.addKeyListener(this);
constraints.gridx=0;
constraints.gridy=3;
constraints.gridwidth=2;
constraints.gridheight=1;
constraints.weightx=100;
constraints.weighty=0;
constraints.fill=GridBagConstraints.BOTH;
//Constraints auf Layout anwenden, JLabel hinzufügen
gridbag.setConstraints(eingabe, constraints);
pane.add(eingabe);
//Constraints für JButton Absenden festlegen
JButton absenden = new JButton("Absenden");
absenden.addActionListener(this);
constraints.gridx=0;
constraints.gridy=4;
constraints.gridwidth=1;
constraints.gridheight=1;
constraints.weightx=80;
constraints.weighty=2;
constraints.fill=GridBagConstraints.BOTH;
//Constraints auf Layout anwenden, JLabel hinzufügen
gridbag.setConstraints(absenden, constraints);
pane.add(absenden);
//Constraints für JButton Löschen festlegen
JButton loeschen = new JButton("Löschen");
loeschen.addActionListener(this);
constraints.gridx=1;
constraints.gridy=4;
constraints.gridwidth=1;
constraints.gridheight=1;
constraints.weightx=20;
constraints.weighty=2;
constraints.fill=GridBagConstraints.BOTH;
//Constraints auf Layout anwenden, JLabel hinzufügen
gridbag.setConstraints(loeschen, constraints);
pane.add(loeschen);
setContentPane(pane);
//Schriften
Font font = new Font ("Verdana", Font.PLAIN, 10);
Font font2 = new Font (font.getFamily(), Font.BOLD, font.getSize());
Font font3 = new Font ("Courier", Font.PLAIN, 12);
ziel.setFont(font);
target.setFont(font);
ihrenachricht.setFont(font2);
absenden.setFont(font2);
loeschen.setFont(font);
eingabe.setFont(font3);
setVisible(true);
// Socket
try {
ss = new ServerSocket(1100);
s = ss.accept();
aus = new PrintWriter(s.getOutputStream(),true);
ein = new BufferedReader(new InputStreamReader(s.getInputStream()));
eingang = ein.readLine();
// in Chatfenster schreiben
while (!eingang.equals("bye")) {
chatfenster.setText("Hallo");
eingang = ein.readLine();
}
ein.close();
aus.close();
s.close();
} catch (IOException e){}
}
public static void main(String[] arguments) {
Chatserver chat = new Chatserver();
}
public void appendtext(String text) {
if(text.length()!=0){
eingabe.setText("");
}
}
public void actionPerformed(ActionEvent evt){
if (evt.getSource() instanceof JButton) {
String cmd = evt.getActionCommand();
if (cmd.equals("Löschen")) {
eingabe.setText("");
}
}
repaint();
if (evt.getSource() instanceof JButton) {
String cmd = evt.getActionCommand();
if (cmd.equals("Absenden")) {
appendtext(eingabe.getText());
aus.println(ausgang);
}
}
repaint();
}
public void keyPressed (KeyEvent evt) {
}
public void keyReleased (KeyEvent evt) {
int x = evt.getKeyCode();
if (x == KeyEvent.VK_ENTER) {
ausgang=eingabe.getText();
appendtext(ausgang);
aus.println(ausgang);
}
repaint();
}
public void keyTyped (KeyEvent evt) {
}
}