import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.ArrayList; /** * * Beschreibung * * @version 1.0 vom 26.05.2017 * @author */ public class ChatServerGUI extends JFrame implements MyServerSocketListener { // Anfang Attribute private ArrayList clients; private ArrayList names; private static boolean ende; private MyServer server; private JLabel jLabel1 = new JLabel(); private JButton jBStarten = new JButton(); private JNumberField jNFPort = new JNumberField(); private JList jList1 = new JList(); private DefaultListModel jList1Model = new DefaultListModel(); private JScrollPane jList1ScrollPane = new JScrollPane(jList1); private JLabel jLabel2 = new JLabel(); private int changeClientListAktiv = 0; private JLabel jLabel3 = new JLabel(); // Ende Attribute public ChatServerGUI() { // Frame-Initialisierung super(); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); int frameWidth = 300; int frameHeight = 311; setSize(frameWidth, frameHeight); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); int x = (d.width - getSize().width) / 2; int y = (d.height - getSize().height) / 2; setLocation(x, y); setTitle("Chat-Server"); setResizable(false); Container cp = getContentPane(); cp.setLayout(null); // Anfang Komponenten jLabel1.setBounds(8, 16, 110, 20); jLabel1.setText("Portnummer"); cp.add(jLabel1); jBStarten.setBounds(96, 48, 75, 25); jBStarten.setText("Starten"); jBStarten.setMargin(new Insets(2, 2, 2, 2)); jBStarten.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jBStarten_ActionPerformed(evt); } }); cp.add(jBStarten); jNFPort.setBounds(128, 16, 99, 20); jNFPort.setText("44444"); cp.add(jNFPort); jList1.setModel(jList1Model); jList1ScrollPane.setBounds(8, 112, 265, 137); cp.add(jList1ScrollPane); jLabel2.setBounds(8, 88, 110, 20); jLabel2.setText("Chatteilnehmer"); cp.add(jLabel2); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { ChatServerGUI_WindowClosing(evt); } }); jLabel3.setBounds(24, 248, 229, 20); jLabel3.setText("(cc) 2017, Thomas Schaller, Version 1.0"); jLabel3.setForeground(Color.GRAY); cp.add(jLabel3); // Ende Komponenten setVisible(true); clients = new ArrayList(); names = new ArrayList(); server = null; } // end of public ChatServerGUI // Anfang Methoden public void neuerClient(MySocket client) { for (String n : names) { if (!n.equals("ManInTheMiddle")) { client.sendeNachricht("user:"+n); } // end of if } // end of for this.clients.add(client); // System.out.println("Habe Kontakt mit "+client.getSocket().getInetAddress()+" Port "+client.getSocket().getPort()); this.names.add("?"); // changeClientList(); } public void changeClientList() { changeClientListAktiv++; if (changeClientListAktiv == 1) { do{ changeClientListAktiv--; DefaultListModel newListModel = new DefaultListModel(); System.out.println("lm: "+jList1Model.size()); System.out.println("Clients: "+clients.size()); for (int i = 0; i < clients.size() ; i++ ) { MySocket s = clients.get(i); String n = names.get(i); newListModel.addElement(n+"("+s.getSocket().getInetAddress()+":"+s.getSocket().getPort()+")"); System.out.println(n+"("+s.getSocket().getInetAddress()+":"+s.getSocket().getPort()+")"); System.out.println("lm: "+jList1Model.size()); } // end of for jList1.setModel(newListModel); jList1.validate(); } while (changeClientListAktiv > 0 ); } // end of if } public void nachrichtEmpfangen(MySocket client) { String s = client.holeNachricht(); System.out.println("Habe Nachricht empfangen:"+s); String[] ss = s.split(":"); int i = clients.indexOf(client); if (ss[0].equals("exit")) { s = s+names.get(i); clients.remove(i); names.remove(i); client.trenneVerbindung(); for (int j=0; j