2016-04-14 16 views
1

テキスト領域の制限を設定するにはどうすればよいですか。私はすでにテキストエリア内の文字の量を追跡するカウンタを作ったので、テキストエリアにもうテキストを置くことを不可能にするためにif文を入れるだけのものが必要になります。それ、どうやったら出来るの?JavaFX TextArea Limit

+1

今第九次のとおりです。

は、彼らはテキストが最大値を超えてしまう場合は、テキストに変更を拒否権フィルタを使用するTextFormatter設定し、テキストエリア内の文字数を制限するには1つの答えを正しいとマークすることなく、あなたが尋ねた質問。あなたがそれを続けるなら、あなたは誰よりも多くの回答を得ることはまずありません。 –

答えて

6

カウンタを作成する際には意味がありません。テキスト領域の文字数は、常にtextArea.getText().length()から利用可能です。または、観測可能な値が必要な場合はBindings.length(textArea.textProperty())です。この

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 <? super KeyEvent> –

+0

自分のコードをコピーして自分のIDEから直接貼り付けました。そのようなエラーはありません。 –

+0

私はそれを働かせました。ありがとう! –

関連する問題