получение измененных строк jtextarea - PullRequest
2 голосов
/ 09 февраля 2012

Я делаю текстовый редактор, который требует пользовательской проверки. Поскольку содержание очень большое, я подумал о проверке только тех строк, которые были изменены или добавлены. Ошибки проверки отображаются номерами строк, например, «Строка: 10 не может превышать 15 символов»

  1. Для отдельных строк каждый раз, когда пользователь меняет iam, проверяя текущую строку, сохраняя номер строки в качестве ссылки. - решено

  2. Пользователь может копировать текст и вставлять несколько строк. для этого подумал о getSelectionStart и getSelectionEnd. Есть ли способ получить номера строк из getSelectionStart и getSelectionEnd, чтобы я мог получить начальную и конечную строки?

После некоторого изложения я подумал, что выбор видимых линий решит мою вышеупомянутую проблему № 2.

Прямоугольник решил бы в получении x, y кординатов видимой области и написал код, я думаю, что я почти закончил. Но я не получаю номер конца строки правильно,

      [code]
    //editor is jtextarea
      Rectangle r = editor.getVisibleRect();
      Point top = new Point(r.x, r.y);
      Point bottom = new Point(r.x, r.y + r.height);
      int startRow = editor.viewToModel(top); /* this is working. it shows 0 at           initial, then after the line reaches the end and when the scrollbar gets displayed, it shows the numbers correctly, 1,2,3...*/
     int endRow = editor.viewToModel(bottom); /* this is not working, when we type, it is taking column numbers */
     editorLineNo.setText(" START ROW " + startRow + " END ROW" + endRow);
     [/code]

     What is needed is, start row number and end row number from the viewable area  of jtextarea  

Ответы [ 2 ]

4 голосов
/ 09 февраля 2012

Есть ли способ получить номера строк ...

Element root = textArea.getDocument().getDefaultRootElement();
int row = root.getElementIndex( selectionStart ) + 1;
3 голосов
/ 09 февраля 2012

Utilities.getRowStart () / getRowEnd () , передавая смещения.

...