[RESOLVIDO]Remoção ArrayList

4 respostas
M

Bom dia galera.. estou com um problema aqui, e gostaria de saber se vocês podem me ajudar..

É o seguinte.. criei uma Jtable com 2 campos que contem NOME e LOGIN, essa Jtable lista todos meus clientes.. e quando dou um duplo clique em determinada linha,
abre uma outra tela..grava o login do cliente clicado em um arrayList e caso o cliente tente abrir a mesma tela de novo ele não deixa.. porem estou tentanto FAZER O SEGUINTE,
quando o cliente FECHAR a tela com um windowsListener verifico se o login do cliente está no arrayList e removo o mesmo..

Porem das duas formas que vou colocar aqui não consegui resolver o problema.. dei uma pesquisada em formas de remoção de ArrayList e nada parecido com o meu problema.

private ArrayList<String> cliente;                        
                   
                  public construtor {
		        cliente = TestJTable_CLient.getCliente();
                        }

                  @Override
		  public void windowOpened(WindowEvent arg0) {
				abriu = true;
				System.out.println("A janela abriu !");
				LoadingScreen();
			}





            @Override
			public void windowClosing(WindowEvent arg0) {
				if (!abriu == false) {

					for (String clientes : cliente) {

                                      // nesse caso se eu utilizar (clientes) dá erro, o eclipse dá essa exeption 
                                      //Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
                                      // o erro sempre dá na linha 124 que é for (String clientes : cliente) {

                                   // se caso eu mudo de clientes PARA (cliente) ele não da exeption..removo o cliente mais só funciona se eu abrir apenas 1 mais de 1 ele da exeption.

						if (clientes.contains(TestJTable_CLient.getLogin())) { 
							// Removo login do cliente assim que ele fecha a
							// janela
							TestJTable_CLient.getCliente().remove(
									TestJTable_CLient.getLogin());

							System.out.println("Login: "
									+ TestJTable_CLient.getLogin()
									+ " Removido!");

						}

					}

				}

			}

-------------------------------------------------------------------------------------------



// Nesse caso acontece que se eu abrir apenas 1 e tentar fecha-lo o eclipse da exeption
//Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
// o erro sempre dá na linha 128 que é a linha do if (it.next().equals(TestJTable_CLient.getLogin())) {


@Override
			public void windowClosing(WindowEvent arg0) {
				if (!abriu == false) {
					
					Iterator<?> it = cliente.iterator();
					
					while (it.hasNext()) {

						if (it.next().equals(TestJTable_CLient.getLogin())) {

							// Removo login do cliente assim que ele fecha a
							// janela
							TestJTable_CLient.getCliente().remove(
									TestJTable_CLient.getLogin());

						System.out.println("Login: "
								+ TestJTable_CLient.getLogin() + " Removido!");
						}
					}

				}
			}

os resultados que já obitivo foram:

quando abro apenas 1 cliente e FECHO remove normalmente..
quando abro mais de 1 cliente e FECHO ele da erro.

4 Respostas

M

ninguém ? :shock:

ViniGodoy

Quanta complicação…

Veja um jeito bem mais simples de fazer comunicação entre janelas:
http://www.guj.com.br/java/55710-jdialog-devolvendo-valor-pra-jinternalframe#292687

Tópico movido para o fórum de interface gráfica.

M

Vlw Vini…Vou dar uma olhada!

M

Consegui Resolver aqui… Modifiquei o codigo acima… por esse

// Criei outro array que armazena os login's (ARemover) que já estão em uso e comparo com o array de clientes conectados caso tenha o mesmo login nos 2 arrays ele remove..

	@Override
			public void windowClosing(WindowEvent arg0) {

				if (!abriu == false) {

					for (Iterator<String> it = cliente.iterator(); it.hasNext();) {
						String LoginCliente = it.next();
						if (ARemover.contains(LoginCliente)) {
							it.remove();
						}
					}
					System.out.println("Dados Filtrados = " + ARemover);
				}
			}

PS: Vini Obrigado pela ajuda !, entendi o exemplo só não consegui entender como ele resolveria meu problema ? meu problema não estava em como passar informações de uma tela para outra… mais acredito que vá ser muito valido, pois tenho que fazer varias telas ainda, e com o seu codigo ficou bem mais claro de como fazer tranferiências de informaçãoes de uma tela para a outra. VLW !

Criado 17 de abril de 2012
Ultima resposta 18 de abr. de 2012
Respostas 4
Participantes 2