Я пытаюсь показать кнопку на TextField, как тема Windows 8 Metro в javafx.Тип TextField для кнопки «Показать» в javafx
Если TextField пуст, кнопка невидима, иначе показывается кнопка.
На этом этапе я немного близок к успеху. Я использую этот код для его создания.
@FXML
private TextField tfMyName;//fx:id="tfMyName"
@FXML
private Button btnClear;//fx:id="btnClear"
@Override
public void initialize(URL url, ResourceBundle rb) {
clearTextFieldByButton(tfMyName, btnClear);
}
public void clearTextFieldByButton(TextField value, Button btn){
btn.setVisible(false);
value.setOnKeyTyped(new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent event) {
if ((value.textProperty().get().length() < 0) || (value.textProperty().get().equals(""))) {
btn.setVisible(false);
} else if (value.textProperty().get().length() > -1 || (!value.textProperty().get().equals(""))) {
btn.setVisible(true);
}
}
});
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
tfMyName.clear();
btn.setVisible(false);
tfMyName.requestFocus();
}
});
Используя этот код на кнопку по умолчанию невидима, но кнопка отображается только, когда я типа более чем один символов. Но мне нужно, если что-то вводит в TextField для кнопки.
Но когда я удалить условие, при KeyEvent заменить
value.setOnKeyTyped(new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent event) {
btn.setVisible(true);
}
});
Тогда БТН шоу, если любой входной символ в TextField
Проблема с OnKeyReleased. Спасибо за ваше предложение. –