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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTextArea: узнать положение курсора в тексте 
V
    Опции темы
seamnia
Дата 2.11.2010, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



необходимо узнать положение курсора в тексте (JTextArea) - номер строки, номер колонки
PM MAIL   Вверх
dorogoyIV
Дата 2.11.2010, 14:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

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

public class CaretPosition extends JFrame
                           implements ActionListener
{
 JTextArea jta = new JTextArea();
 JButton jb = new JButton("get cursor position");

 public CaretPosition()
 {
  setDefaultCloseOperation(3);
  setBounds(100, 100, 400, 300);

  add(new JScrollPane(jta));
  add(jb, "South");
  jb.setFocusable(false);
  jb.addActionListener(this);
 }

 public void actionPerformed(ActionEvent e)
 {
  try
  {
   int pos = jta.getCaretPosition();
   int line = jta.getLineOfOffset(pos);
   int start = jta.getLineStartOffset(line);
   int end = jta.getLineEndOffset(line);

   System.out.println
     ("This line starting in " + start + "\nLine = " + (line + 1) + "\n" + 
      "This line end in " + end + "\n" +
      "Cursor position in this line = " + (pos - start) + "\n");
  }
  catch(Exception ex){}
 }

 public static void main(String [] args)
 {
  SwingUtilities.invokeLater(new Runnable()
  {
   public void run()
   {
    new CaretPosition().setVisible(true);
   }
  });
 }
}

PM MAIL   Вверх
seamnia
Дата 2.11.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

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



Текст автоматически переносится или нет?

Добавлено через 1 минуту и 27 секунд
dorogoyIV, это не будет работать при включенном переносе (setLineWrap(true)).


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
dorogoyIV
Дата 2.11.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Skipy @  2.11.2010,  14:41 Найти цитируемый пост)
Текст автоматически переносится или нет?

нашел косячек  smile 
PM MAIL   Вверх
seamnia
Дата 2.11.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



тоже обнаружила косяк с setLineWrap =)
PM MAIL   Вверх
dorogoyIV
Дата 2.11.2010, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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


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


Новичок



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

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



dorogoyIV , именно так я и решила сказать на защите лабы =)
посмотрим, насколько я красноречива 
PM MAIL   Вверх
Skipy
Дата 2.11.2010, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

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



Цитата(dorogoyIV @ 2.11.2010,  15:07)
хотя с другой стороны - это ведь таже самая строка. и то, что она выглядит как две строки (или больше) из-за ширины панели, не значит, что это две строки (или больше). поэтому мой код правильный!

Формально - да. Но когда на экране курсор стоит в начале второй строки, а позиция выдается как 1-я строка, 50-й символ... smile Есть некоторое ощущение, что нас кидают.

Добавлено через 56 секунд
Цитата(dorogoyIV @ 2.11.2010,  14:43)
Цитата(Skipy @  2.11.2010,  14:41 Найти цитируемый пост)
Текст автоматически переносится или нет?

нашел косячек  smile

Так я к этому моменту тоже тест написал, обнаружил этот косяк и именно потому задал вопрос. %)


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
dorogoyIV
Дата 2.11.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



да нет, не кидают smile
если продолжить дальше работать с этим кодом, то все нормально.
т.е. можно копировать, вставлять, вырезать, ...

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

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

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


 




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


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

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