我有一个TextField
,每当我选择它包含的部分文本时,都会触发一个监听器。例如,在以下情况下,在选择左侧的两位数后,我将其替换为5:
这可以正常使用,但这不是:
错误是:
Exception in thread "JavaFX Application Thread"
java.lang.StringIndexOutOfBoundsException: String index out of range: 3
代码是:
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class SelectedText extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
StackPane root = new StackPane();
root.getChildren().add(textField);
Scene scene = new Scene(root, 100, 100);
primaryStage.setScene(scene);
primaryStage.show();
textField.selectedTextProperty().addListener((final ObservableValue<? extends String> ov,
final String oldSelection, final String newSelection) -> {
System.out.println ("text selected: " + newSelection);
});
}
public static void main(String[] args) {
launch(args);
}
}