package client; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.TextArea; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import utils.Message; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JTextArea; import java.awt.Color; import java.awt.event.ActionListener; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.net.SocketException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.awt.event.ActionEvent; public class Client1 extends JFrame { private static JPanel contentPane; JTextField txtMessage; private static JTextField txtUsername; public static String currentText = " "; public static int i = 0; public static Object tosend = new Message("Leer", "Leer"); public static Client1 t1; public static Socket socket; public static ObjectInputStream obinstr; public static ObjectOutputStream oboust; public static int j = 0; public static JTextArea textArea = new JTextArea(); public static int k = 0; public static void main(String[] args) { t1 = new Client1(); EventQueue.invokeLater(new Runnable() { public void run() { try { Client1 frame = new Client1(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); try { start(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public Client1() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); txtMessage = new JTextField(); txtMessage.setText("Message"); txtMessage.setBounds(20, 230, 218, 20); contentPane.add(txtMessage); txtMessage.setColumns(10); txtUsername = new JTextField(); txtUsername.setText("Username"); txtUsername.setBounds(20, 11, 86, 20); contentPane.add(txtUsername); txtUsername.setColumns(10); JButton btnSend = new JButton("Send"); btnSend.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if(j != 0){ String themessage = txtMessage.getText(); String theusername = txtUsername.getText(); tosend = new Message(theusername, themessage); i = 1; Message temp = new Message(theusername, themessage); System.out.println("Button pressed"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); System.out.println(socket.isConnected()); try{ try { oboust.writeObject(tosend); oboust.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }} catch( Exception k){ print(textArea, "KEINE VERBINDUNG"); } if(temp.getMessage().equals("exit")){ System.exit(0); } } } }); btnSend.setBounds(264, 229, 79, 23); contentPane.add(btnSend); // HIER PUBLIC GEMACHT textArea = new JTextArea(currentText); textArea.setLineWrap(true); textArea.setForeground(Color.WHITE); textArea.setBackground(Color.LIGHT_GRAY); textArea.setBounds(20, 42, 323, 176); contentPane.add(textArea); JButton btnStart = new JButton("Start"); btnStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { txtUsername.setEditable(false); txtUsername.setEnabled(false); j = 1; } }); btnStart.setBounds(116, 10, 89, 23); contentPane.add(btnStart); } public static void print(JTextArea textArea, String asd){ currentText = asd + "\n" + currentText; textArea.setText(currentText); //System.out.println("ES FUNKTIONIERT"); } public static void start() throws IOException, ClassNotFoundException{ //JTextArea textArea = new JTextArea("BERDAN"); while(j==0){ try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } txtUsername.setEnabled(false); System.out.println("NOTEDITABLE"); Scanner scan = new Scanner(System.in); //HIER PUBLIC GEMACHT textArea = new JTextArea(currentText); textArea.setLineWrap(true); textArea.setForeground(Color.BLACK); textArea.setBackground(Color.LIGHT_GRAY); textArea.setBounds(20, 42, 323, 176); //Dopplung contentPane.add(textArea); try{ socket = new Socket( "localhost", 1238 ); oboust = new ObjectOutputStream(socket.getOutputStream()); obinstr = new ObjectInputStream(socket.getInputStream()); print(textArea, "VERBINDUNG HERGESTELLT"); }catch(Exception KeineSocket){ print(textArea, "SERVER ANTWORTET NICHT"); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } start(); System.exit(0); } Object erhalten = null; Message message = new Message("leer", "leer"); while(!message.getMessage().equals("exit")){ System.out.println("WHILE"); try{ //System.out.println("hile4"); erhalten = obinstr.readObject(); //Bleibt hier stehen, bis ein neues Object reinkommt message = (Message)erhalten; String Ausgeben = message.getTime() + " [" + message.getUsername() + "] " + message.getMessage(); print(textArea, Ausgeben); //System.out.println("[CLIENT] NACHRICHT ERHALTEN"); oboust.flush(); } catch(SocketException h){ System.out.println(h); print(textArea, "VERBINDUNGSABBRUCH"); k++; try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(k ==5){ k = 0; start(); System.exit(0); } } catch(Exception f){ try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } oboust.close(); obinstr.close(); socket.close(); System.exit(0); } }