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!!!