вопрос про Java SWT

chirrsen

Хочется при фокусе на одном контроле чтобы все символы, которые вводятся с клавиатуры показывались в ТекстБоксе.
Можно подписаться КейЛиснером к первому контролу, и добавлять введенные символы в ТекстБокс.
Отсюда вопрос:Как определить, что данный char является таким символом, который можно ввести с клавиатуры в какой-нибудь ТекстБокс? Т.е. чтобы отфильтровать всякие делиты, эскейпы, ентеры и т.д.... ну не писать же самому такую функцию, перечисляя все возможные символы...
Или может существует еще какое-нибудь решение?
З.Ы. Контролы SWT-шные

kindr-16

чего-то подобного http://commons.apache.org/lang/api-release/index.html должно хватить

chirrsen

чего-то подобного http://commons.apache.org/lang/api-release/index.html должно хватить
нда, весьма общё...

milanadiana

думаю чnо-нибудь такое тебе нужно. Только причем тут SWT?
import java.util.regexp.*;
(...)
Pattern p = Pattern.compile("\p{Graph}+");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches;

chirrsen

Только причем тут SWT?
подумал, может есть какие-нибудь механизмы перенаправить вводимые символы в SWT...
в итоге пришлось написать все же такую функцию:
 
public static boolean isCharPrintable(char ch) {

if (ch >= 32 && ch < 127)
return true;

return ch>='А' && ch<='Я' || ch == 'Ё' || ch>='а' && ch<='я'|| ch=='ё';

}

kokoc88

public static boolean isCharPrintable(char ch)
В инструкциях на немецком, французском и некоторых других языках напишите "для поддержки ввода с клавиатуры обратитесь к разработчику".

chirrsen

В инструкциях на немецком, французском и некоторых других языках напишите "для поддержки ввода с клавиатуры обратитесь к разработчику"
вообще вряд ли, кто-то кроме русскоязычных юзеров будут пользоваться данным софтом...
получается всё же правильнее заюзать регэкспы?

Dasar

получается всё же правильнее заюзать регэкспы?
правильнее, взять стандартную java-функцию, которая определяет принтабельность символа.

kokoc88

правильнее, взять стандартную java-функцию, которая определяет принтабельность символа.
Угу, она есть в Character, но беда в том, что судя по первому посту, автору нужно так же обрабатывать всякие backspace, enter, tab, ctrl-z, и так далее.

Dasar

автору нужно так же обрабатывать всякие backspace, enter, tab, ctrl-z, и так далее.
от этого все равно никуда не деться, но со стандартной функцией по крайней мере со стандартными символами проблем не будет

kokoc88

получается всё же правильнее заюзать регэкспы?
Для символов можно воспользоваться Character.isLetterOrDigit но я бы вместо этого использовал коды клавиш, типа KeyEvent.VK_A ... KeyEvent.VK_Z и т.п. То есть передавал бы в редактор более низкоуровневые события. Если бы ты работал со swing, я бы подсказал как это всё сделать.

chirrsen

Character.isLetterOrDigit
вообще хочется чтобы всякие знаки типа: '=', '/', '@' и т.д. тоже поддерживались... какая есть функция в Character, которая возвращает true для принтабельных символов?

chirrsen

правильнее, взять стандартную java-функцию, которая определяет принтабельность символа.
собственно я и хотел с самого начала узнать эту стандартную функцию?

psm-home

А не достаточно будет отфильтровать
SWT.BS


The Backspace character ('\b')

SWT.CR


The Return character ('\r')

SWT.DEL


The Delete character ('\u007F')

SWT.ESC


The Escape character ('\u001B')

SWT.LF


The Linefeed character ('\n')

SWT.TAB

или просто выкидывать все, на что Character.isISOControl вернет true?
Оставить комментарий
Имя или ник:
Комментарий: