2016-04-14 34 views
1

Metin alanında nasıl bir sınır belirlerim. Metin alanındaki karakterlerin miktarını takip eden bir sayaç yaptım, şimdi metin alanına daha fazla metin koymayı imkansız hale getirmek için sadece bir ifara ihtiyacım var. Bunu nasıl yaparım?JavaFX TextArea Limit

+1

şimdi dokuzuncu geçerli:

onlar metin maksimum aşmasına neden olursa metinde değişiklik veto bir filtre kullanan bir TextFormatter set, bir metin alanında karakter sayısını sınırlamak için Tek bir cevabı doğru olarak işaretlemeden sorduğunuz soru. Devam ederseniz, başkalarından çok daha fazla yanıt almanız mümkün değildir. –

cevap

6

Sayaç oluşturmayla ilgili bir nokta yok: Metin alanındaki karakterlerin sayısı zaten yalnızca textArea.getText().length()'dan itibaren veya gözlemlenebilir bir değere ihtiyacınız varsa, Bindings.length(textArea.textProperty()). Bu

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

Sizinkilere benzer bir kod kullandım ama şu hatayı aldım: uyumsuz türler: TextFormatter , EventHandler

+0

Kodumu doğrudan IDE'mden kopyaladım ve yapıştırdım: böyle bir hata vermez. –

+0

Çalıştırdım. Teşekkürler! –