逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::

    /**

     * Delete the line where the cursor is positioned.

     */

    public void deleteCurrentLine() {

        // ab^EndPos: so EndPos is 3, there are 2 characters a, b, ^ is the flag

        // of end of the document.

        int length = getDocument().getLength();

        if (length <= 0) { return; }


        Element root = getDocument().getDefaultRootElement();

        int pos = getCaretPosition();

        int lineNumber = root.getElementIndex(pos); // 取得光标所在行的行号

        Element e = root.getElement(lineNumber);


        int start = e.getStartOffset();

        int end = e.getEndOffset(); // 取得所在行最后回车的下一个位置, 有可能是文档结束位置


        if (end == root.getEndOffset()) {

            // 如果是文档结束,则删除前一行的回车,且跳到文档结束的前一位置,其为行的有效位置

            start = Math.max(0, start - 1); // 删除前一行最后的回车

            end--;

        }

        try {

            getDocument().remove(start, end - start);


            // 设置光标在所在行的首行

            lineNumber = root.getElementIndex(start);

            e = root.getElement(lineNumber);

            start = e.getStartOffset();

            setCaretPosition(start);

        } catch (BadLocationException e2) {

            e2.printStackTrace();

        }


        /*

        start = Math.max(0, start - 1); // 删除前一行最后的回车

        end = Math.min(end, root.getEndOffset() - 1); //

        // 最后一行的时候,要往前跳一个位置跳过文档结束符

        // System.out.println("Start:" + start + ", End: " + end);


        if (start == 0) {

            getDocument().remove(start, end - start); // 第一行的时候,要把第一行尾的回车删除

        } else if (end + 1 == root.getEndOffset()) {

            getDocument().remove(start, end - start);


            // 最后一行时,删除后设置光标到行的最前面

            pos = root.getElement(root.getElementIndex(start)).getStartOffset();

            setCaretPosition(pos);

        } else {

            getDocument().remove(start, end - start - 1); // 删除前一行的回车,留这一行的回车

            setCaretPosition(start + 1); // 设置光标在下一行的首行

        }*/

    }

posted on 2010-05-22 01:12 逛奔的蜗牛 阅读(349) 评论(0)  编辑 收藏 引用 所属分类: Java

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理