一部のバックストーリー。私は、テキストフィールドへの入力をフィルタリングするためにテキストフォーマットを使用しています。私は数字だけのために1つ、英数字のためのもの、小数のある数字のためのものを持っています。これは文字のみでなければならず、 "真"または "偽"の大文字と小文字を区別しません。以下のコードでは、入力したい文字だけを入力することができますが、これは必要な機能ですが、順番には一致しません。JavaのTextFormatterを使用して真と偽を照合する方法
UnaryOperator<TextFormatter.Change> filterBoolean = (TextFormatter.Change t) -> {
if (t.isReplaced()) {
if (t.getText().matches("[^tTrRuUFfAaLlSsEe]")) {
t.setText(t.getControlNewText().substring(t.getRangeStart(), t.getRangeEnd()));
}
} else if (t.isAdded()) {
if (t.getText().matches("[^tTrRuUFfAaLlSsEe]")) {
t.setText("");
} else if (t.getText().matches("[^tTrRuUFfAaLlSsEe]")) {
t.setText("");
}
}
return t;
};
getTextField().setTextFormatter(new TextFormatter<>(formatter));
私は、各t.getText()ラインに
|| t.getControlNewText().matches("[tT][rR][uU][eE]|[fF][aA][lL][sS][eE]")
|| t.getControlNewText().matches("[^([tT][rR][uU][eE]|[fF][aA][lL][sS][eE])]")
|| t.getControlNewText().matches("^([tT][rR][uU][eE]|[fF][aA][lL][sS][eE])")
を追加し、それらを分離することによって、この機能を使用しようとしましたが、動作するようには思えません。 私は、X文字までの英数字を許可する類似したテキストフォーマッタを持っていますが、それは敏感ではありません。
私の質問は、 "true"と "False"、大文字と小文字を区別しないテキストフィールドの入力敏感な入力を可能にするためにコードを編集するにはどうすればいいですか?
ほとんど話題にはなりませんが、私はこのためのユースケースを想像するのは難しいです。ユーザーが "true"または "false"を入力することになっている場合、チェックボックス、ラジオボタン、またはトグルボタンを使用するだけではどうですか? –
さて、初心者のためにテキストを小文字にシフトできます。また、 'String'からこれを取得する際に' Boolean.parseBoolean(someString) 'を使うことができないのはなぜか分かりません。 –
テキストフィールドはエディタに動的に追加されていますが、これは良い考えです。 –