Ошибка использования метода подстроки с текстовым полем - PullRequest
0 голосов
/ 20 октября 2019

У нас есть ошибка, когда мы пытаемся получить первые несколько символов строки
Сначала мы попытались удалить два последних оскорбительных символа
Это привело к той же ошибке, которую мы наблюдаем, когда пытаемся получитьпервые несколько символов
Метод On Key Typed присоединяется к текстовому полю, когда MAX-символ превышен, запускается пользовательское предупреждение
. Мы рассмотрели много способов удалить или получить подстроки в различных SO-вопросах, прежде чем публиковать

Введенная строка никогда не будет прежней, поэтому мы не знаем, какой символ заменить
Здесьэто код и снимок экрана с сообщением об ОШИБКЕ, что "o" перед исходным текстом
Вводимая нами строка "Это тест, чтобы увидеть, сколько лет"
Мы пытаемся получить только «Это тест, чтобы увидеть, сколько»
Именно System.out.println (strNew), но когда strNew добавляется в текстовое поле, появляется «o»

Наш вопрос состоит в том, как предотвратить это?
ИЛИ В чем причина нечетного текста, который находится в текстовом поле?

Вотминимальный код для проверки

public class Atest extends Application {
@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("test.fxml"));
    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
}
public static void main(String[] args) {
    launch(args);
}

Контроллер

public class testController implements Initializable {
@FXML
TextField txtDesc;
@FXML
private void handleButtonAction(ActionEvent event) {
    txtDesc.setText("Thanks");
}
@FXML
private void descLEN(){
    txtDesc.setOnKeyTyped(event ->{
    int maxCharacters = 10;
    if(txtDesc.getText().length() > maxCharacters)
        event.consume();
    });    
}
@Override
public void initialize(URL url, ResourceBundle rb) { 
}    

Мы не знаем, как разместить код FXML, все, что вам нужно, это TextField
сидентификатор txtDesc и установите OnKeyTyped в descLEN

1 Ответ

0 голосов
/ 20 октября 2019

Поскольку вы поглощены пользовательским оповещением, вам может не понравиться наш ответ
Я называю это "Мы слышим, как вы стучите, но вы не можете прийти на ваше мероприятие - потребляйте"
ОК, ответ, предложенный Седриком, великолепен, но мыЯ использовал только 3 строки кода
Нет пользовательского оповещения, только 30 символов и кучу потребляющих ха-ха

@FXML
private void onType(){
    txtDescription.setOnKeyTyped(event ->{
    int maxCharacters = 30;
    if(txtDescription.getText().length() > maxCharacters)event.consume();
}); 

Все правильно, 7 строк, если вы считаете вкладку FXML, а также декларацию и форматирование

...