我正在做一个需要自定义验证的文本编辑器。因为,内容非常大,我想只验证改变或添加的行。验证错误由行号显示,例如“Line:10不能超过15个字符”
对于单行,每次用户更改iam验证当前行时,保持行号作为参考。 - 已解决
用户可以复制文本和粘贴 - 多行。为此,想到了getSelectionStart和getSelectionEnd。有没有办法从getSelectionStart和getSelectionEnd获取行号,所以我可以得到起始行和结束行?
经过一些演示后,我认为选择可见的线条将解决我上面提到的第2号问题。
Rectangle将解决获取可视区域的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
答案 0 :(得分:4)
有没有办法获取行号...
Element root = textArea.getDocument().getDefaultRootElement();
int row = root.getElementIndex( selectionStart ) + 1;
答案 1 :(得分:3)