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. 黒いモーダルフェードがテキストフィールドに入力できないようにします
- 3. 入力テキストフィールド内のテキストを太字にするにはどうすればよいですか?
- 4. jQueryの検証 - ユーザーがテキストフィールドに数字や特殊文字を入力しないように制限するにはどうすればよいですか?
- 5. テキストフィールドに1文字を入力するとキーボードが戻る
- 6. テキストフィールドに入力するときに文字が無視される
- 7. フォームのテキストフィールドに特殊文字を入力しないようにするにはどうすればよいですか?
- 8. 番号と文字のみを入力できるようにするには?
- 9. PURE JAVASCRIPTで特定の文字数制限の後に入力フィールドに入力しないようにする。
- 10. 入力テキストフィールドに10文字を入力したときにフォームを自動送信する方法
- 11. 配列内の各メモリブロック内に文字列を入力するにはどうすればよいですか?
- 12. 特定の文字がテキストフィールドに入力されないようにするにはどうすればよいですか?
- 13. 条件付き入力で文字列を入力するにはどうすればよいですか?
- 14. ダブルクオート文字をTextBoxに入力しないようにするにはどうすればよいですか?
- 15. そのテキストフィールドに入力中に、テキストフィールドのfillColorを変更するにはどうすればよいですか?
- 16. SWT DirectoryDialogでフォルダを選択できないようにする
- 17. メディア内部テキスト項目記述子の「データ」テキストフィールドに入力できる文字の数
- 18. セルに式のような文字列を入力できません。
- 19. は、私は次の文字のみをテキストボックスに入力できるようにしようとしていますテキストフィールド
- 20. テキストフィールドに入力するとき
- 21. 入力タイプ 'email'のテキストフィールドにテキストを入力できません
- 22. AppleScript:Safariのテキストフィールドに入力できる文字列の長さを制限できますか?
- 23. capitalizedStringをios内の上付き文字を大文字にしないように制限できますか?
- 24. どのように私はそれに入力中の文字のみを受け入れるようにテキストフィールドを検証するiphone
- 25. ExtJSの日付ピッカーの入力値に数字以外の数字を入力できるようにする
- 26. TextBoxでユーザーが数値以外の文字や空白を入力できないようにする
- 27. EditTextに数字が入力されないようにする
- 28. 入力にスペース文字を使用できないのはなぜですか?
- 29. テキストフィールド内の特殊文字
- 30. AngularJS ui-select最小入力長がユーザーに複数の文字を入力するよう通知しない
感謝 - あなたも、これは恐ろしいソリューションであるのkeyCode 8 – Gregor
ためSWT.BSを使用するには、このを美化することができます!ペーストには使えません。 delete-keyには機能しません。それ以外には何のために働かないのですか?伝えるのは難しい。 – Lii
@Lii私はちょうどctrl + x、ctrl + vとDELキーをサポートするソリューションを更新します。 – ozhan