Alguém sabe me dizer como eu faço para cancelar o fechamento de uma janela JFilleChooser?
Pois no funcionamento default dela, independente do que seja informado na caixa de texto disponível, a janela é encerrada.
publicstaticvoidmain(String[]args){JFileChooserchooser=newJFileChooser();chooser.showSaveDialog(null);//Não feche a janela caso o nome do arquivo seja inválido (um método meu que retorna um boolean)if(isNomeArquivoInvalido()){//O que devo colocar aqui para que a janela não seja fechada????????}}
Até onde sei (meu conhecimento em Java ainda é pouco), o seu código para na linha chooser.showSaveDialog(null); e fica aguardando até que a caixa de seleção de arquivo seja fechada (tendo sido ou não selecionado um arquivo). Ou seja, quando seu código chega na linha if (isNomeArquivoInvalido()), o JFileChooser já está fechado (consequentemente, você não pode cancelar o fechamento de algo que já está fechado).
Possíveis soluções seriam (novamente, considerando que sei pouco de Java):
1 - executar o showSaveDialog várias vezes até ter uma arquivo válido. Essa solução me parece bem inadequada, além de “deselegante”. Mais ou menos assim:
publicstaticvoidmain(String[]args){JFileChooserchooser=newJFileChooser();Stringfilename="";//Não feche a janela caso o nome do arquivo seja inválido (um método meu que retorna um boolean)while(!isNomeArquivoInvalido(filename)){chooser.showSaveDialog(null);filename=chooser.getName();// poderia ser também//filename = chooser.getSelectedFile().getAbsolutePath();}}
2 - criar seu próprio FileChooser (sobrescrever o JFileChooser). Você poderia alterar métodos como o accept() e cancelSelection(), para não fecharem a janela (me foge como fazer isso);
3 - talvez alterar o FileFilter do seu JFileChooser também ajude, já que limitaria as possíveis seleções que o usuário poderia fazer;