2016-04-14 5 views
1

Как установить ограничение на текстовую область. Я уже сделал счетчик, который отслеживает количество символов в текстовой области, теперь мне просто нужно что-то добавить в оператор if, чтобы сделать невозможным добавить текст в текстовую область. Как мне это сделать?Ограничение JavaFX TextArea

+1

Это сейчас девятая вопрос, который вы задали, без правильного указания одного ответа. Вы вряд ли получите больше ответов от кого-либо, если продолжите это. –

ответ

6

Нет смысла создавать счетчик: количество символов в текстовой области уже всегда доступно только от textArea.getText().length() или, если вам нужно наблюдаемое значение, Bindings.length(textArea.textProperty()).

Чтобы ограничить количество символов в текстовой области, установите TextFormatter, который использует фильтр, который наложил вето на изменения в текст, если они будут вызывать текст превышать максимальное значение:

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.TextArea; 
import javafx.scene.control.TextFormatter; 
import javafx.scene.control.TextFormatter.Change; 
import javafx.stage.Stage; 

public class LimitedTextArea extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     final int MAX_CHARS = 15 ; 

     TextArea textArea = new TextArea(); 

     textArea.setTextFormatter(new TextFormatter<String>(change -> 
      change.getControlNewText().length() <= MAX_CHARS ? change : null)); 



     Scene scene = new Scene(textArea, 400, 400); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+0

Я использовал код, похожий на ваш, но я получил эту ошибку: несовместимые типы: TextFormatter не может быть преобразован в EventHandler

+0

Я скопировал и вставил свой код непосредственно из своей IDE: он не дает такой ошибки. –

+0

Я заработал. Благодаря! –

Смежные вопросы