Exibir mensagem ao tentar remover itens de uma lista vazia

Bom dia pessoal, tenho uma app(SWT) onde contém uma lista e um botão remover. Estou tentado exibir uma mensagem, caso o botão for pressionado e a lista estiver vazia, mais assim : " Não é possivel remover itens de uma lista vazia" Tentei conforme o codigo abaixo mas naum fez efeito algum no codigo e continuou gerando o mesmo erro: java.lang.ArrayIndexOutOfBoundsException: -1


if (lista == null){
System.out.println("Selecione uma conexao para remover");
			}

voce deve testar se a lista esta vazia e nao nula…
List a = new ArrayList(); //esta vazia
List b =null; //esta nulo

tente substituir o lista ==null por lista.isEmpty()

abraços

Raphael, nesse if vc só valida se a referencia lista é nula, o q evita um NullPointerException…
se sua lista for um array tente usar o seguinte:

if(lista.length ==0){
     System.out.println("Selecione uma conexao para remover");
}

se vc estiver usando um List tente o seguinte:

if(lista.isEmpty()){
     System.out.println("Selecione uma conexao para remover");
}

flw
Marcus

Mas é o seguinte, nem o lista.lenght , nem o lista.isEpty é reconhecido pelo eclipse, por isso eu tentei lista == null , foi o unico que o eclipse reconheceu, eu axo que isso ocorre pq é uma list(SWT), interface gráfica e naum o list do java.util.

tente o metodo lista.getItemCount() no lugar de lista.lenght

abraços

Esse metodo eu tambem ja tentei… acho que naum me expressei direito, segue o codigo abaixo … quem sabe possa-se visualizar melhor essa ‘bomba’…

final Button btnRemover = new Button(shell, SWT.PUSH);
		btnRemover.setText("Remover");
		btnRemover.addListener(SWT.Selection, new Listener(){
			@Override
			public void handleEvent(Event event) {

				int itemSelect = lista.getSelectionIndex();    
				Teste teste = array.get(itemSelect);  
				String Banco = txtBanco.getText();
				String Driver = comboDriver.getText();
				String URL = comboURL.getText();
				String Usuario = txtUsuario.getText();
				String Senha = txtSenha.getText();
				String Schema = txtSchema.getText();
				String Cache = txtCache.getText();
				String Read = comboRead.getText();

				Teste novoTeste = new Teste(Banco , Driver , URL , Usuario , Senha , Schema , Cache , Read); 

				
					if (lista == null){//to tentando isso aki , naum aceita os outros metodos citados acima

						System.out.println("Selecione uma conexao para remover");
					}
				
					lista.remove(novoTeste.getBanco());
					array.remove(itemSelect);
					System.out.println (" Conexão apagada " + Banco);

					txtBanco.setText("");// limpar os campos txt apos pressionar 'remover'
					comboDriver.setText("");
					comboURL.setText("");
					txtUsuario.setText("");
					txtSenha.setText("");
					txtSchema.setText("");
					txtCache.setText("");
					comboRead.setText("");
				}
		});

pelo que eu entendi vc esta recebendo um arrayOutOfIndexEcepion pois vc esta tentando ler um item que nao existe …

vc etsa lendo o item selecionado

int itemSelect = lista.getSelectionIndex();

o teste deveria ser antes desta chamada … pois vc esta chamando o metodo pra buscar o selecionado e depois esta testando para ver se existe item.

coloque a verificação sempre em primeiro lugar … verifique , se existir item, prossiga…


			final Button btnRemover = new Button(shell, SWT.PUSH);     
			btnRemover.setText("Remover");     
			btnRemover.addListener(SWT.Selection, new Listener(){     
				@Override     
				public void handleEvent(Event event) {     
					if (lista.getItemCount()  == 0){   
						System.out.println("Selecione uma conexao para remover");     
					}else{   

						int itemSelect = lista.getSelectionIndex();         
						Teste teste = array.get(itemSelect);       
						String Banco = txtBanco.getText();     
						String Driver = comboDriver.getText();     
						String URL = comboURL.getText();     
						String Usuario = txtUsuario.getText();     
						String Senha = txtSenha.getText();     
						String Schema = txtSchema.getText();     
						String Cache = txtCache.getText();     
						String Read = comboRead.getText();     

						Teste novoTeste = new Teste(Banco , Driver , URL , Usuario , Senha , Schema , Cache , Read);     

						lista.remove(novoTeste.getBanco());     
						array.remove(itemSelect);     
						System.out.println (" Conexão apagada " + Banco);     

						txtBanco.setText("");// limpar os campos txt apos pressionar 'remover'     
						comboDriver.setText("");     
						comboURL.setText("");     
						txtUsuario.setText("");     
						txtSenha.setText("");     
						txtSchema.setText("");     
						txtCache.setText("");     
						comboRead.setText("");     
					}   
				}     
			});    

Entendi… então sou obrigado a fazer a verificação (que no meu caso esta vendo se naum tem nenhum item da lista =0) antes de percorrer a lista para ver se há elementos, axo que é isso? ou não?

exato … antes de acessar vc tem que verificar se o elemento que vc esta tentando acessar existe, isso serve para todos os casos !!

abraços … e boa sorte !

vlw!!! e desejo o mesmo pra você fera!!!