Я пытаюсь удалить элементы из Jlist в режиме реального времени, но я всегда получаю постоянное сообщение об ошибке, элементы списка состоят из имен пользователей, которые должны быть удалены, когда сервер отправляет определенное сообщение.
package com.yorkrider;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class A_Chat_Client implements Runnable
{
// globals
Socket SOCK;
Scanner INPUT;
Scanner SEND = new Scanner(System.in);
PrintWriter OUT;
ArrayList<String> Users = new ArrayList<String>();
// -----------------------------------------------------------------------------------
public A_Chat_Client(Socket X)
{
this.SOCK = X;
}
// -----------------------------------------------------------------------------------
public void run()
{
try
{
try
{
INPUT = new Scanner(SOCK.getInputStream());
OUT = new PrintWriter(SOCK.getOutputStream());
OUT.flush();
CheckStream();
}
finally
{
SOCK.close();
}
}
catch(Exception X) { System.out.print(X); }
}
// ---------------------------------------------------------------------------------
public void DISCONNECT() throws IOException
{
OUT.println(A_Chat_Client_GUI.UserName + " has disconnected");
OUT.flush();
Remove_User(A_Chat_Client_GUI.UserName, SOCK);
//SOCK.close();
JOptionPane.showMessageDialog(null, "You Disconnected");
//Users.removeAll();
//System.exit(0);
}
// ---------------------------------------------------------------------------------
public void CheckStream()
{
while(true)
{
RECEIVE();
//A_Chat_Client_GUI.JL_ONLINE.setListData(Users)
}
}
// ---------------------------------------------------------------------------------
public void RECEIVE()
{
if(INPUT.hasNext())
{
String MESSAGE = INPUT.nextLine();
if(MESSAGE.contains("#?!"))
{
String TEMP1 = MESSAGE.substring(3);
TEMP1 = TEMP1.replace("[","");
TEMP1 = TEMP1.replace("]", "");
String[] CurrentUsers = TEMP1.split(", ");
A_Chat_Client_GUI.JL_ONLINE.setListData(CurrentUsers);
//Users.add(TEMP1);
A_Chat_Client_GUI.TA_CONVERSATION.append(A_Chat_Server.CurrentUsers.get(
A_Chat_Server.CurrentUsers.size()-1) +" has joined on IP address "+
A_Chat_Client_GUI.HostIP+" and port number "+A_Chat_Client_GUI.PortNumber +"\n");
A_Chat_Client_GUI.JL_ONLINE.removeAll();
System.out.println(Users);
}
//----------------The problem is here-------------------------
else if(MESSAGE.contains("@!@")) {
String TEMP1 = MESSAGE.substring(3);
TEMP1 = TEMP1.replace("[", "");
TEMP1 = TEMP1.replace("]", "");
for(int j=0; j < A_Chat_Client_GUI.JL_ONLINE.getModel().getSize(); j++){
if (TEMP1.equals(A_Chat_Client_GUI.JL_ONLINE.getModel().getElementAt(j))){
A_Chat_Client_GUI.JL_ONLINE.getModel().remove(j);
}
}
}
//--------------------The problem is here------------------------
else
{
A_Chat_Client_GUI.TA_CONVERSATION.append(MESSAGE + "\n");
}
}
}
// ---------------------------------------------------------------------------------
public void SEND(String X)
{
OUT.println(A_Chat_Client_GUI.UserName + ": " + X);
OUT.flush();
A_Chat_Client_GUI.TF_Message.setText("");
}
// ---------------------------------------------------------------------------------
public static void Remove_User(String UserName, Socket SOCK) throws IOException
{
Socket TEMP_SOCK = SOCK;
PrintWriter OUT = new PrintWriter(TEMP_SOCK.getOutputStream());
OUT.println("@!@" + UserName);
System.out.println(UserName);
OUT.flush();
}
}
Это сообщение об ошибке, которое является постоянным сообщением об ошибке:
java.lang.ArrayIndexOutOfBoundsException: индекс массива вне диапазона: 0