2017-07-27 61 views
1

私はjavaFxを初めて使用していますので、ここで私の愚かな質問を無視してください。3文字入力を許可する(制限する)必要があります。または3文字後、後者は表示されません)検証のための多くのソリューションが見つかりましたが、3文字までの制限はありません。javafxで最大3文字の入力をユーザに制限する

ようtextPropertyリスナーを使用して
public class editController { 
@FXML 
private TextField countrycode; 
    public void add(ActionEvent event) { 
    String ADD=countrycode.getText(); 
    try { 
     if(ADD.isEmpty()){ 
       Alert alert=new Alert(Alert.AlertType.ERROR); 
       alert.setHeaderText(null); 
       alert.setContentText("Please Fill All DATA"); 
       alert.showAndWait(); 
       return; 
     } 


     FXMLLoader loader =new FXMLLoader(); 
     loader.load(getClass().getResource("/region/newCountry.fxml").openStream()); 

答えて

5

検証:

countrycode.textProperty().addListener(new ChangeListener<String>() { 
     public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { 
      if (newValue.length() > 3) { 
       countrycode.setText(oldValue); 
      } 
     } 
    }); 

または文字列の長さを取得し、

int length = ADD.length(); 
if (length > 3) { 
    System.out.println("Please Enter Lessthen 3 character"); 
} 
+0

私のコードにはうまくいかず、ユーザーが入力した場合、3つ以上のチャーターを表示したくない – Rocky

+0

このコードがあなたを助けてくれることを願っています!あなたがこの解決策であなたの問題を解決したら、将来他人を助けるための答えを受け入れることを赦してはいけません。 –

+0

私はちょうど3文字を表示したい場合は、ユーザーがより多くの値を入れて、それが入力フィールドで許可しない場合に表示されます – Rocky

1

ようにあなたがあなたのテキストフィールドのreplaceText(int,int,String)方法をこのように@Overrideしていることを確認してください。

@Override 
public void replaceText(int start, int end, String text) { 
    if ("".equals(text)) { // handles delete 
     super.replaceText(start, end, text); 
     return; 
    } 
    if (getText().length() < 3) { // handles add and checks length. 
     super.replaceText(start, end, text); 
    } 
} 

これで3文字以上を挿入することはできませんが、2番目のif条件の代わりに任意のregexpとuseを定義することができます。

1

solution of @KeyurBhanderiは、charでcharを入力するまで十分です。しかし、長いテキストをクリップボードから貼り付けようとすると、テキストフィールドに変更が表示されません。驚き!

field.setText(newValue.substring(0, maxLimit)); 

この場合、エンドユーザーがテキストの一部が表示され、すぐに何が起こっているかを理解するだろう。少なくとも切り捨てられた文字列混乱セットを回避するための別の方法として

。警告付きのポップアップウィンドウを表示する方が良いでしょう。

関連する問題