如何在每次单击删除按钮时构建删除按钮以从TextField中删除字符?

问题描述 投票:-2回答:2

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) {

}
java javafx textfield javafx-8
2个回答
0
投票

解决您的问题的方法是使用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;
            }
        }
    });
}

0
投票
textfield.setText(textfield.getText(0, textfield.getLength()-1));
© www.soinside.com 2019 - 2024. All rights reserved.