7
A
答えて
6
VerifyListenerを使用して、ユーザーの入力に従って文字を拒否します。
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Test {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
final Text text = new Text(shell, SWT.BORDER);
text.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
// allows cut (CTRL + x)
if (e.text.isEmpty()) {
e.doit = true;
} else if (e.keyCode == SWT.ARROW_LEFT ||
e.keyCode == SWT.ARROW_RIGHT ||
e.keyCode == SWT.BS ||
e.keyCode == SWT.DEL ||
e.keyCode == SWT.CTRL ||
e.keyCode == SWT.SHIFT) {
e.doit = true;
} else {
boolean allow = false;
for (int i = 0; i < e.text.length(); i++) {
char c = e.text.charAt(i);
allow = Character.isDigit(c) || Character.isWhitespace(c);
if (! allow) {
break;
}
}
e.doit = allow;
}
}
});
text.setSize(200, 20);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
0
Swingには、JFormattedTextFieldがあります。これはまさにそれを行います。しかし、私はSWTには何も似ていないと思う。 JFormattedTextFieldが必要な場合は、JFormattedTextFieldをインクルードするためにいくつかの変更を加えることができます。別のオプションは、入力後にユーザーの入力を検証することです。
2
VerifyListener
をテキストコントロールに設定すると、挿入されたテキストに数字のみが含まれていることを確認できます。
これは、キーコードを使用するソリューションよりも優れています。入力に作用するので、貼り付けや削除などの操作はブロックされません。
例:解決のための
text.addVerifyListener(new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
for (int i = 0; i < e.text.length(); i++) {
if (!Character.isDigit(e.text.charAt(i))) {
e.doit = false;
return;
}
}
}
});
関連する問題
- 1. 入力テキストフィールド内のテキストを太字にするにはどうすればよいですか?
- 2. テキストフィールドに1文字を入力するとキーボードが戻る
- 3. テキストフィールドに入力するときに文字が無視される
- 4. 番号と文字のみを入力できるようにするには?
- 5. 条件付き入力で文字列を入力するにはどうすればよいですか?
- 6. ダブルクオート文字をTextBoxに入力しないようにするにはどうすればよいですか?
- 7. 特定の文字がテキストフィールドに入力されないようにするにはどうすればよいですか?
- 8. そのテキストフィールドに入力中に、テキストフィールドのfillColorを変更するにはどうすればよいですか?
- 9. は、私は次の文字のみをテキストボックスに入力できるようにしようとしていますテキストフィールド
- 10. 入力プレースホルダ内にhtml文字を入力
- 11. ExtJSの日付ピッカーの入力値に数字以外の数字を入力できるようにする
- 12. EditTextに数字が入力されないようにする
- 13. どのように私はそれに入力中の文字のみを受け入れるようにテキストフィールドを検証するiphone
- 14. TextBoxでユーザーが数値以外の文字や空白を入力できないようにする
- 15. 文字列に必要な文字を入力する方法
- 16. テキストフィールド内の特殊文字
- 17. React入力テキストフィールドに入力できません
- 18. Webkitブラウザでフルスクリーンモードでテキスト入力に文字や数字を入力できない
- 19. 文字を入力するときに文字がスキップされています
- 20. angularjs入力フィールドをチェックしてSQLインジェクションのような文字列が届かないようにする
- 21. JS:キーボード入力:「*」(多重符号)を入力するときに「8」を入力しないようにする
- 22. アラビア語テキストの右寄せになるようにテキストフィールド内の入力カーソルの位置を変更するにはどうすればいいですか?
- 23. 入力テキストフィールドに英語のキーボードで入力するようユーザーに強制する
- 24. テキストフィールドに入力された文字の値を変更します
- 25. cの別の行に入力文字を入力する
- 26. 長さが0のときにユーザーがテキストボックスに特殊文字を入力しないようにするにはどうすればよいですか?
- 27. jQuery:入力テキストフィールドの入力時にラジオボタンをオンにします。
- 28. テキストフィールドに入力するキーユーザを認識
- 29. プログラム内の文字列入力
- 30. Javascript:文字列、ハイフン1文字、アポストロフィ1文字しか入力できないようにフィールド上でフィールドを検証します。
感謝 - あなたも、これは恐ろしいソリューションであるのkeyCode 8 – Gregor
ためSWT.BSを使用するには、このを美化することができます!ペーストには使えません。 delete-keyには機能しません。それ以外には何のために働かないのですか?伝えるのは難しい。 – Lii
@Lii私はちょうどctrl + x、ctrl + vとDELキーをサポートするソリューションを更新します。 – ozhan