JavaFX TextField
如何构建一个删除按钮(可以检测哪个TextField处于活动状态)并在每次单击删除按钮时从TextField中删除一个字符?
(对不起,现在还有更多的解释)我有三个TextField(如下面的列表),当光标位于其中一个TextField时说在tf1,当我点击btnDelete Button时,一个字符可以从ft1中删除(btnDelete)按钮的工作方式与从计算机键盘删除的方式相同。
@FXML
TextField tf1;
@FXML
TextField tf2;
@FXML
TextField tf3;
@FXML
public void btnDelete(ActionEvent actionEvent) {
}
解决您的问题的方法是使用focusedProperty来保存,当newValue为true时,在通用TextField txt上保存TextField ...查看此示例代码:
@FXML
TextField tf1;
@FXML
TextField tf2;
@FXML
TextField tf3;
TextField txt;
@FXML
public void btnDelete(ActionEvent actionEvent) {
txt.setText( txt.getText().substring(0, txt.getText().length()-1));
}
@Override
public void initialize(URL url, ResourceBundle rb) {
tf1.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (newValue){
txt=tf1;
}
}
});
tf2.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (newValue){
txt=tf2;
}
}
});
tf3.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (newValue){
txt=tf3;
}
}
});
}
textfield.setText(textfield.getText(0, textfield.getLength()-1));