J'ai une petite Java application de bureau qui utilise Swing. Il y a une entrée de données boîte de dialogue avec un champ de saisie de différents types (component swing jtextfield, JComboBox, JSpinner, JFormattedTextField). Quand j'active le JFormattedTextFields soit en surbrillance par le biais du formulaire ou en cliquant avec la souris, je l'aime pour sélectionner tout le texte qu'elle contient. De cette façon, les utilisateurs peuvent commencer à taper et écraser les valeurs par défaut.
Comment puis-je le faire? J'ai eu un FocusListener/FocusAdapter que les appels selectAll() sur le JFormattedTextField, mais il ne sélectionnez rien, bien que le FocusAdapter de focusGained() la méthode est appelée (voir l'exemple de code ci-dessous).
private javax.swing.JFormattedTextField pricePerLiter;
// ...
pricePerLiter.setFormatterFactory(
new JFormattedTextField.AbstractFormatterFactory() {
private NumberFormatter formatter = null;
public JFormattedTextField.AbstractFormatter
getFormatter(JFormattedTextField jft) {
if (formatter == null) {
formatter = new NumberFormatter(new DecimalFormat("#0.000"));
formatter.setValueClass(Double.class);
}
return formatter;
}
});
// ...
pricePerLiter.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
pricePerLiter.selectAll();
}
});
Des idées? Le plus drôle, c'est que la sélection de l'ensemble de son texte, en apparence, est le comportement par défaut pour les deux component swing jtextfield et JSpinner, au moins lors de la tabulation par le biais du formulaire.