TextField的SelectedTextProperty的侦听器失败

时间:2016-09-03 08:35:15

标签: javafx

我有一个TextField,每当我选择它包含的部分文本时,都会触发一个监听器。例如,在以下情况下,在选择左侧的两位数后,我将其替换为5:

enter image description here

这可以正常使用,但这不是:

enter image description here

错误是:

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);
    }  
}

0 个答案:

没有答案