Причина, по которой регулярное выражение не будет работать, заключается в том, что оно заставляет хотя бы одну цифру, поэтому вы не сможете набрать знак. Если вы можете ввести цифру, затем стрелку влево в начале строки, затем введите цифру знака, тогда вы, вероятно, захотите изменить регулярное выражение на [-+]?\d*
В противном случае, tt может пытаться применить регулярное выражение к одному вводимому символу (в setKeyPressFilter
). И, конечно, это не сработает и по той же причине: вы заставляете число быть цифровым, поэтому в этой 1-й клавише не остается места ни для цифры, ни для знака.