如何在JTextArea中获取所选字符位置?

时间:2010-05-28 13:39:25

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

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

首先让我告诉你我的情景如何实现问题的解决方案。

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

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

在简单的句子中,我想要来自nearset'+'的第一个字符位置(用户选择的文本),该位置应该在用户选择的文本之前出现。

PS:cp037是一种由IBM& Co.创建的字符编码方案。用于IBM Mainframes。

如果问题不明确,请随意问我......: - >

2 个答案:

答案 0 :(得分:3)

JTextComponent有一个方法

public int getSelectionStart()

返回所选文本的开始位置。对于空文档返回0,如果没有选择则返回点值。

public String getSelectedText()

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

答案 1 :(得分:2)

JTextComponentgetSelectionEnd()getSelectionStart()两种方法可以帮助您。

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

这可能类似于你所需要的。