Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaFX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Andrec
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
1

Как в javaFX запретить ввод в TextField символов кроме цифр и точки?

18.03.2017, 04:41. Просмотров 1830. Ответов 4
Метки нет (Все метки)

в javaFX сделать запрет на ввод символов кроме цифр и точки

пишу такой код:
Java
1
2
3
4
5
6
TextField1.setOnKeyTyped(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
char c = ke.getKeyChar();
if ( ((c < '0') || (c > '9')) && (c != KeyEvent.VK_PERIOD)) {
ke.consume(); }
} });
при компиляции в cmd вылезает ошибка
в строке
Java
1
char c = ke.getKeyChar();
java.147 error cannot find simbol
ругается на точку в
Java
1
 ke.getKeyChar()
и в строке
Java
1
 KeyEvent.VK_PERIOD
где стоит точка
тоже самое error cannot find simbol
в swing все нормально работает в javaFX одни ошибки вылезают

еще вопрос обработка исключений в javaFX
на тот случай если пользователь все же скопирует и вставит буквенные символы
чтобы программа проигнорировала действие и ничего не делала
при компиляции все норм, но при вставке разных символов в текстовое поле
cmd выдает множество разных строк
Java
1
2
3
4
5
6
7
8
9
try
{
String str = TextField1.getText();
double do=Double.valueOf(str);
}
 catch (NumberFormatException e)
{
ke.consume();
}  }
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2017, 04:41
Ответы с готовыми решениями:

TextField запретить ввод всех символов кроме цифр и '-'
Требуется наложить на TextField условие ввода, которое разрешает вводить только...

Ограничение на ввод символов в TextField
import java.awt.Checkbox; import java.awt.Color; import java.awt.Container;...

Как рисовать поверх компонент TextField JavaFX
Всем привет, не могу понят как можно рисовать поверх компонент, какой метод...

Как сохранить число в Double с TextField в JavaFX?
Помогите . Мне нужно что бы данные из TextField height сохранялись в double...

JavaFX + Scene Builder как получить значение с TextField
Я только начинаю учить javaFX, поэтому, может это и глупый вопрос, но я...

4
Andrec
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
18.03.2017, 04:45  [ТС] 2
скрин при вставке разных символов в текстовое поле cmd выдает множество разных строк
0
Миниатюры
Как в javaFX запретить ввод в TextField символов кроме цифр и точки?  
Kadota
75 / 75 / 77
Регистрация: 29.01.2017
Сообщений: 167
Завершенные тесты: 1
18.03.2017, 14:10 3
Лучший ответ Сообщение было отмечено Andrec как решение

Решение

Ты путаешь KeyEvent'ы. Методы в приведенном коде есть у KeyEvent'а из java.awt, а если ты используешь KeyEvent из javafx, то можно использовать
Java
1
char c = ke.getCharacter().charAt(0);
и
Java
1
c != java.awt.event.KeyEvent.VK_PERIOD
Но в этом случае можно поставить несколько точек. Можно заменить условие на это
Java
1
2
if ( ((c < '0') || (c > '9')) && ((c != p) || (((TextField) ke.getSource()).getText().contains("" + p)))) {
    ke.consume();
Но это не избавляет от возможности вставлять скопированный текст.
Лучше всего будет воспользоваться регулярным выражением вместо setOnKeyTyped
Java
1
2
3
4
    Pattern p = Pattern.compile("(\\d+\\.?\\d*)?");
    field.textProperty().addListener((observable, oldValue, newValue) -> {
        if (!p.matcher(newValue).matches()) field.setText(oldValue);
    });
Теперь проверяется весь добавленный текст, а не нажатый символ и вставки уже не сработают
1
Andrec
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
18.03.2017, 22:07  [ТС] 4
А еще вопрос, задам в этой же теме чтобы не плодить кучу тем

Как задать рамку и заливку Canvas, делаю таким образом ни чего не получается, холст пустой

Java
1
Canvas.setStyle("-fx-background-color: lightblue; -fx-border-color: black;");
приходится рисовать прямоугольник с заливкой, может есть другой способ?
0
Kadota
75 / 75 / 77
Регистрация: 29.01.2017
Сообщений: 167
Завершенные тесты: 1
19.03.2017, 00:14 5
с css точно не получится. Canvas наследуется прямо от Node, а у него скудный набор css-команд.

Добавлено через 6 минут
Лучше всего использовать fillRect() и strokeRect()
1
19.03.2017, 00:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2017, 00:14

Group и TextField JavaFX
Как можно сделать, чтобы Group (кнопка для удаления текста) исчезала, когда...

JavaFX установить прослушку снятия выделения TextField
Имеется TextField в HBox, HBox находится в AnchorPane. Когда TextField...

Как поставить огранечения на ввод у textField?
Подскажите как поставить огранечения на ввод у textField. 1.Только цифри....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru