Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать форматированное поле ввода. / 8 сообщений из 8, страница 1 из 1
01.08.2005, 16:35
    #33194795
Сергей Ильич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать форматированное поле ввода.
Никто не подскажет, как ограничить варианты ввода в JTextField, чтобы туда можно было внести только текст, соответствующий некоему регулярному выражению.
Скорее всего, что для этого надо использовать JFormattedTextField и наследника Format.
Неплохо бы чтобы
- Текст соответствующий фиксированным фрагментам регекспа как-то автокомплитился
- Были бы некоторые дефолтовые значения для нефиксированных фрагментов регекспа, чтобы, например, если пользовнтель выделил фрагмент вводимого текста и нажал delete фиксированные фрагменты остались на месте, а нефиксированные, например, были бы заменены дефолтовыми значениями.

В качестве примера можно рассмотреть поле для ввода IP - адреса.
...
Рейтинг: 0 / 0
01.08.2005, 17:37
    #33194943
Сергей Ильич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать форматированное поле ввода.
BTW задача ограничения ввода в Текстбоксе довольно типичная. Неплохо бы увидеть комменты кто и как ее решает.
...
Рейтинг: 0 / 0
01.08.2005, 17:42
    #33194961
боц
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать форматированное поле ввода.
:) Самое простое.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 package  test.swing;

 import  javax.swing.*;
 import  javax.swing.text.*;
 import  java.awt.*;
 import  java.text.*;

 public   class  IPField  extends  JFrame {
   public  FormattedField()  throws  ParseException {
     super ("IP-Formatted Field");
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    MaskFormatter mf =  new  MaskFormatter("###.###.###.###");
    mf.setPlaceholderCharacter('_');

    JFormattedTextField jftf =  new  JFormattedTextField(mf);
    getContentPane().add(jftf);
    setVisible(true);
  }

   public   static   void  main(String[] args)  throws  ParseException {
     new  IPField();
  }
}

...
Рейтинг: 0 / 0
01.08.2005, 18:08
    #33195038
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать форматированное поле ввода.
Вот ссылка интересная

http://javagu.ru/portal/dt?last=false&provider=javaguru&ArticleId=GURU_ARTICLE_64813&SecID=GURU_SECTION_63111#DA001
...
Рейтинг: 0 / 0
02.08.2005, 12:59
    #33196308
Сергей Ильич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать форматированное поле ввода.
Мне нужна довольно простая вешь - сделать поле ввода, куда можно воткнуть от 0 до 6 цифр.
Пробелы не катят, и следовательно MaskFormatter("######") не катит, так как он
добивает строку до 6 символов пробелами. MaskFormatter("######") c placeholderChar '0' тоже не катит, так как строка может быть короче 6 символов или даже вообще быть пустой.
Строка может начинаться с произвольного количества нулей, или даже быть '000000', следовательно NumberFormat тоже не катит, так как он мочит лидирующие нули.
...
Рейтинг: 0 / 0
02.08.2005, 13:03
    #33196318
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать форматированное поле ввода.
http://java.sun.com/products/jfc/tsc/articles/reftf/ ???
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
02.08.2005, 13:31
    #33196434
Сергей Ильич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать форматированное поле ввода.
Рулез. то что надо.
...
Рейтинг: 0 / 0
03.08.2005, 15:20
    #33199495
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать форматированное поле ввода.
У меня тоже один вопрос есть. Код
Код: plaintext
1.
2.
3.
4.
5.
  DecimalFormat decimalFormat =  new  DecimalFormat("0.0#");
  NumberFormatter textFormatter =  new  NumberFormatter(decimalFormat);

  textFormatter.setOverwriteMode(true);
  textFormatter.setAllowsInvalid(false);
Все вобщем-то работает только криво. Неработает '.'(точка) как разделитель, хотя в формате "0.0#" задается именно она. А вот запятая работает, приходится потом менять '.' на ','. Можно как нибудь руками выставить сепаратор? И вообще почему с данным форматом подобное происходит. В региональных настройках сепапатор везде (RU,EN) точка.
Заранее спсибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать форматированное поле ввода. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]