Ho una serie di JTextComponent che l'utente deve riempire. Una volta che sono tutte "piene" si deve attivare il bottone di salvataggio.
Per fare questo ho creato questo piccolo listener:
codice:
class ValidatorListener extends KeyAdapter {
private JTextComponent[] components = new JTextComponent[4];
ValidatorListener() {
components[0] = (JTextComponent) categoriesComboBox.getEditor().getEditorComponent();
components[1] = nameTextField;
components[2] = tagsTextField;
components[3] = codeEditor;
}
public void keyTyped(KeyEvent e) {
boolean enabled = true;
for (JTextComponent c : components) {
enabled &= (c.getText() + (e.getSource() == c ? e.getKeyChar() : "")).trim().length() != 0;
}
saveButton.setEnabled(enabled);
}
}
In pratica ad ogni nuovo tasto premuto controllo se è tutto ok ed eventualmente attivo il bottone.
1. Così com'è ora non mi sembra granchè... Come potrei renderlo migliore?
2. Problema "grave": se il contenuto di uno dei JTextComponent viene tagliato (CTRL/COMMAND + X) il bottone rimane attivo quando invece dovrebbe disabilitarsi. Se cancello con il backspace invece nessun problema. Come potrei risolvere questo problema?
Grazie