Estou desenvolvendo um sistema de caderneta escolar, onde, ao salvar, o usuário digitará o nome do arquivo a ser salvo. Gostaria de, impedir o usuário de digitar um dos caracteres inválidos em nomes de arquivos:
\ / ? : * " > < |
ou até mesmo outros, se houver (não sei, conheço somente estes)...
Já pesquisei no Google e em vários fóruns possibilidades como: JFormattedTextField, PlainDocument, DocumentFilter, KeyListener (o que eu logo descartei, pois é possível copiar e colar), mas a grande maioria, senão 100% dos casos o pessoal pede filtros a-z ou 0-9, o que não me ajuda.
O mais próximo que eu cheguei foi aqui:public class Filtro extends DocumentFilter{
@Override
public void insertString(FilterBypass fb, int offset, String text, AttributeSet attr)
throws BadLocationException {
fb.insertString(offset, text.replaceAll("[\\W]", ""), attr);
}
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs)
throws BadLocationException {
fb.replace(offset, length, text.replaceAll("[\\W]", ""), attrs);
}
}
fb.replace(offset, length, text.replaceAll("[\\/?:*\"><|]", ""), attrs);
Li também sobre expressões regulares, onde o ? e * são operadores... tentei reajustá-los dentro dos colchetes, mas sem sucesso...
Alguém teria alguma ideia interessante?