【问题标题】:JTextArea - how to get first index of current line?JTextArea - 如何获取当前行的第一个索引?
【发布时间】:2014-10-22 07:37:26
【问题描述】:

假设我有一个JTextArea,我想用特定文本替换当前行:

示例

123
123455
68967869
gh

现在我想替换当前光标现有行的文本。

所以如果光标在第 3 行,输出将是:

123
123455
replaced text
gh 

现在我有了这个代码。但它只是附加到当前行而不是当前行的第一个位置。

 jtextarea1.getDocument().insertString(jtextarea1.getCaretPosition(), "replaced text", null);

输出

123
123455
68967869replaced text//that's the problem
gh 

【问题讨论】:

    标签: java swing jtextarea


    【解决方案1】:

    使用JTextArea API:

    JTextArea txt = ...;
    int caretOffset = txt.getCaretPosition();
    int lineNumber = txt.getLineOfOffset(caretOffset);
    int startOffset = txt.getLineStartOffset(lineNumber);
    int endOffset = txt.getLineEndOffset(lineNumber);
    
    txt.replaceRange("Replaced Text", startOffset, endOffset);
    

    【讨论】:

    • 为什么不链接到JTextArea(最新文档)?
    • @whiletrue 修正了错误。
    • “这给了我错误” TooManyKittensError?绝杀公猫。 (总是复制/粘贴错误和异常输出!)
    • @AndrewThompson 是的,当然。这就是我在谷歌上搜索JTextArea 时得到的信息;)
    • “这就是我在谷歌上搜索的结果..” 是的。熟悉那段经历。当它让我进入早期文档时,我通过将数字更改为最新文档来进行实验,看看它是否有效。如果是这样,那就是粘贴的那个(否则我只需点击后退按钮并选择一个有效的;))。
    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多