Eu fiz um meigo código pra verificação de atributos únicos no SWT. Funciona mais ou menos assim: O usuário digita o texto, e ele verifica se o texto coincide com o texto do mesmo campo de uma lista de objetos do mesmo tipo (vinda do banco de dados, no caso).
Vamos supor que o campo seja Placa de automóvel.
placaText = new Text(composite, SWT.CENTER | SWT.BORDER);
placaText.addVerifyListener(new VerifyListener() {
public void verifyText(final VerifyEvent e) {
e.text = e.text.toUpperCase();
if (e.keyCode == 127) e.doit = false; // Não permite a tecla Delete
else {
StringBuffer buffer = new StringBuffer(placaText.getText());
buffer.insert(e.start, (e.keyCode != 8) ? e.character : '$');
boolean existe = false;
// Só testa quando o tamanho estiver correto,
// evitar loops desnecessários
if (buffer.toString().length() == 8) {
for (Automovel a : listaautomoveis) {
if (buffer.toString().equalsIgnoreCase(a.getPlaca())) {
existe = true;
break;
}
}
}
// isso é um label. Pode ser colocado embaixo do campo "placa" ;)
erroPlacaL.setText(existe ? "Placa já cadastrada" : "");
}
}
});
placaText.setTextLimit(8);
E eu continuo minha busca incessante por um primo do JFormattedTextField pra SWT :(
Té mais o/
Nenhum comentário:
Postar um comentário