【问题标题】:How do you get the selected character position in a JTextArea?如何在 JTextArea 中获取选定的字符位置?
【发布时间】:2010-05-28 22:11:10
【问题描述】:

这是一个具有挑战性的问题!

让我先告诉你我的场景我是如何实现一个问题的解决方案的。

我正在读取一个日志文件并将其显示在 JTextArea 上。日志文件是 cp037 字符编码的。我正在从日志文件中读取每个文件作为字节流或字节数组并显示它。无论如何,我设法通过 cp037 字符编码在 JTextArea 中正确显示文本。

现在,用户可以在 JTextArea 中选择一组字符。我想要的只是用户所选文本的第一个字符的位置,距离最近的特殊字符“+”(其在 cp037 中的字符代码为 4E),它位于所选文本之前。该字符可能出现在 JTextArea 中的多个位置。

在简单的句子中,我想要最近的“+”中的第一个字符位置(用户选择的文本),它应该出现在用户选择的文本之前。

PS:cp037 是一种字符编码方案,由 IBM 创建并用于 IBM 大型机。

如果问题不清楚,请随时问我...:->

【问题讨论】:

    标签: java user-interface swing character-encoding jtextarea


    【解决方案1】:

    JTextComponent 有一个方法

    public int getSelectionStart()
    

    返回选定文本的起始位置。空文档返回 0,如果没有选择则返回 dot 的值。

    public String getSelectedText()
    

    返回包含在此 TextComponent 中的选定文本。如果选择为 null 或文档为空,则返回 null。

    【讨论】:

      【解决方案2】:

      JTextComponentgetSelectionEnd()getSelectionStart()这两种方法对你有帮助。

      String firstSelectedChar;
      String text = textArea.getText();
      int selectionStart = textArea.getSelectionStart();
      firstSelectedChar = text.substring(selectionStart, selectionStart + 1);
      

      这可能与您需要的相似。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-17
        • 2011-01-18
        • 2017-09-30
        • 2018-02-10
        • 1970-01-01
        相关资源
        最近更新 更多