Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализовать T9 
V
    Опции темы
Akonkagva
Дата 23.1.2010, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 4.1.2008

Репутация: нет
Всего: нет



Мне надо реализовать поддержку T9(как в мобильнике, подсказывание текста, возможен вариант работа как в Eclipse) в своей программе, как я могу это сделать ?
Поддержку лутше всего организовать в поле типа JTextArea.
Если поддержку нельзя создать в JTextArea, то подскажите на какой тип мне поменять данную JTextArea.
Если кто-то делал нечто подобное обьясните пожалуйста как это сделать, можно даже примерно.
Заранее спасибо.

Это сообщение отредактировал(а) Akonkagva - 23.1.2010, 20:30
PM MAIL   Вверх
GZep
Дата 23.1.2010, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: нет
Всего: 32



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


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
dorogoyIV
Дата 24.1.2010, 03:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(Akonkagva @  23.1.2010,  20:29 Найти цитируемый пост)
реализовать поддержку T9

Цитата(GZep @  23.1.2010,  22:31 Найти цитируемый пост)
прогу где это реализованно

там файлик текстовый небольшой со словами
есть еще файлик с окончаниями для слов


Это сообщение отредактировал(а) dorogoyIV - 24.1.2010, 03:22
PM MAIL   Вверх
Akonkagva
Дата 24.1.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 4.1.2008

Репутация: нет
Всего: нет



Угум, я до этого тоже допёр, а поточнее ?
PM MAIL   Вверх
dorogoyIV
Дата 25.1.2010, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(Akonkagva @  24.1.2010,  21:37 Найти цитируемый пост)
а поточнее ?

ну как то так наверное?
Код

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

public class Test extends JFrame
{
 JTextArea jta = new JTextArea("аба");

 public Test()
 {
  add(new JScrollPane(jta));
  jta.addKeyListener(new AreaListener(jta));
 }

 public static void main(String [] args)
 {
  JFrame f = new Test();
  f.setBounds(100, 100, 400, 300);
  f.setDefaultCloseOperation(3);
  f.setVisible(true);
 }
}

class AreaListener implements KeyListener, ActionListener
{
 JTextArea jta;
 JPopupMenu jpm = new JPopupMenu();
 String [] s = {"абажур", "абакан", "аврора"};
 String lastWord = "";
 boolean show = true;

 AreaListener(JTextArea jta)
 {
  this.jta = jta;
 }

 public void keyPressed(KeyEvent e){}
 public void keyTyped(KeyEvent e){}

 public void keyReleased(KeyEvent e)
 {
  int pos = jta.getCaretPosition();

  if(e.getKeyCode() != KeyEvent.VK_ESCAPE &&
     e.getKeyCode() != KeyEvent.VK_SPACE &&
     jta.getText().length() > 2 && pos == jta.getText().length())
  {
   findWords(jta.getText());
   show = true;
  }
 }

 private String getLastWord(String text)
 {
  String [] str = text.split(" ");
  return str [str.length - 1];
 }

 private void findWords(String text)
 {
  lastWord = getLastWord(text);

  if(lastWord.length() > 2)
  {
   Vector <String> v = new Vector <String>();

   for(int i = 0; i < s.length; i++)
    if(s [i].startsWith(lastWord))
     v.add(s [i]);

   if(v.size() > 0 && show)
    showPopup(v);
  }
 }

 private void showPopup(Vector <String> v)
 {
  jpm.removeAll();

  for(int i = 0; i < v.size(); i++)
  {
   JMenuItem item = new JMenuItem(v.get(i));
   jpm.add(item);
   item.addActionListener(this);
  }

  Point p = getCursorPosition();
  jpm.show(jta, p.x, p.y);
 }

 public void actionPerformed(ActionEvent e)
 {
  String word = e.getActionCommand();
  String text = jta.getText();
  int index = text.length() - lastWord.length();
  String newText = text.substring(0, index) + word + " ";
  jta.setText(newText);
  show = false;
 }

 private Point getCursorPosition()
 {
  Caret caret = jta.getCaret();
  Point p = caret.getMagicCaretPosition();
  return p;
 }
}

PM MAIL   Вверх
Akonkagva
Дата 25.1.2010, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 4.1.2008

Репутация: нет
Всего: нет



Супер, Большое спасибо !!!!
PM MAIL   Вверх
dorogoyIV
Дата 29.1.2010, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



что то скучно было, думаю - дай попишу...  smile 
потести


Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  iTapPad.jar 403,81 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.