> Tuttavia, non riesco a trovare nulla nell'API JavaFX che consenta di farlo?
Il componente PasswordField
non visualizza il testo mascherato per impostazione predefinita. Tuttavia è possibile utilizzare PasswordField
con TextField
e attivare o disattivare il testo mascherato/non mascherato utilizzando questi componenti. Dove il testo non mascherato è mostrato da TextField
, come nella demo di esempio qui sotto.
> desidero utilizzare un TextField che visualizzare l'ultimo premuto per solo mezzo secondo o fino alla pressione prossima chiave chiave, e quindi egli sarà mascherare tutti gli input dell'utente precedente.
Dal PasswordField
, è una versione estesa di TextField
. Puoi sempre creare la tua casella di testo personalizzata password con le proprietà che hai citato.
> c'è un modo per me di entrare in possesso del sistema operativo dipendente (penso che dipende dal sistema operativo ??) password di carattere eco dovrei usare?
Francamente non ha afferrato quello che stai dicendo qui. È possibile tenere traccia delle modifiche apportate al testo aggiungendo listener di modifiche a PasswordField.textPrperty()
e animazioni, timer, ecc. È possibile ignorare la maschera di richiamo predefinita estendendo PasswordFieldSkin
e utilizzandola attraverso il CSS -fx-skin
.Vedere la definizione di proiettile nella sua source here:
public class PasswordFieldSkin extends TextFieldSkin {
public static final char BULLET = '\u2022';
public PasswordFieldSkin(PasswordField passwordField) {
super(passwordField, new PasswordFieldBehavior(passwordField));
}
@Override protected String maskText(String txt) {
TextField textField = getSkinnable();
int n = textField.getLength();
StringBuilder passwordBuilder = new StringBuilder(n);
for (int i=0; i<n; i++) {
passwordBuilder.append(BULLET);
}
return passwordBuilder.toString();
}
}
Infine, Ecco dare il via demo app di mostrare caratteri della password utilizzando le associazioni:
@Override
public void start(Stage primaryStage) {
// text field to show password as unmasked
final TextField textField = new TextField();
// Set initial state
textField.setManaged(false);
textField.setVisible(false);
// Actual password field
final PasswordField passwordField = new PasswordField();
CheckBox checkBox = new CheckBox("Show/Hide password");
// Bind properties. Toggle textField and passwordField
// visibility and managability properties mutually when checkbox's state is changed.
// Because we want to display only one component (textField or passwordField)
// on the scene at a time.
textField.managedProperty().bind(checkBox.selectedProperty());
textField.visibleProperty().bind(checkBox.selectedProperty());
passwordField.managedProperty().bind(checkBox.selectedProperty().not());
passwordField.visibleProperty().bind(checkBox.selectedProperty().not());
// Bind the textField and passwordField text values bidirectionally.
textField.textProperty().bindBidirectional(passwordField.textProperty());
VBox root = new VBox(10);
root.getChildren().addAll(passwordField, textField, checkBox);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Demo");
primaryStage.setScene(scene);
primaryStage.show();
}
fonte
2013-06-09 21:50:39
appena provato il culo calci demo. Funziona perfettamente. Potresti non modificare e aggiornare la tua risposta con alcuni commenti sulle domande che ho posto? Se è così posso controllare la tua risposta come risposta accettata. Grazie per la tua demo !! –
@MartinAndersson. Sicuro. Sfortunatamente sono fuori ufficio da pochi giorni. Aggiornerò la mia risposta con i commenti e i link di riferimento APPENA POSSIBILE. –
@MartinAndersson. Si prega di consultare l'aggiornamento. –