这是一个具有挑战性的问题!
首先让我告诉你我的情景如何实现问题的解决方案。
我正在读取日志文件并将其显示在JTextArea上。日志文件是cp037字符编码。我正在从日志文件&中读取每个文件作为字节流或字节数组。显示它。无论如何,我设法通过cp037字符编码在JTextArea中正确显示文本。
现在,用户可以在JTextArea中选择一组字符。我想要的是用户所选文本的第一个字符的位置,从最近的特殊字符“+”(其中cp037中的字符代码是4E)开始,它位于所选文本之前。此字符可能出现在JTextArea中的多个位置。
在简单的句子中,我想要来自nearset'+'的第一个字符位置(用户选择的文本),该位置应该在用户选择的文本之前出现。
PS:cp037是一种由IBM& Co.创建的字符编码方案。用于IBM Mainframes。
如果问题不明确,请随意问我......: - >
答案 0 :(得分:3)
JTextComponent有一个方法
public int getSelectionStart()
返回所选文本的开始位置。对于空文档返回0,如果没有选择则返回点值。
public String getSelectedText()
返回此TextComponent中包含的选定文本。如果选择为null或文档为空,则返回null。
答案 1 :(得分:2)
JTextComponent
的getSelectionEnd()
,getSelectionStart()
两种方法可以帮助您。
String firstSelectedChar;
String text = textArea.getText();
int selectionStart = textArea.getSelectionStart();
firstSelectedChar = text.substring(selectionStart, selectionStart + 1);
这可能类似于你所需要的。