java - 如何在 Swing 的 TextArea 中选择特定文本

标签 java

所以我编写了一个在文本区域中搜索单词的代码。这是代码:

else if(str.equals("Find Next"))
{
    if(ta.getText().length()!=0 && t1.getText().length()!=0)
    {
        int n = ta.getText().trim().indexOf(t1.getText().trim());
        ta.select(n,t1.getText().length());
    }
}

作为引用,ta 是 texarea,t1 是用户输入要搜索的单词的 TextField。我的问题是,当我写一个类似这样的字符串时 - 他是一个好男孩,并搜索说,好,然后好没有被选中,但是当我搜索“他”时,他被选中。我基本上想说的是,如果我在文本字段中输入字符串的第一个单词,则会搜索并选择它,但如果我输入任何其他单词,它不会被选择。我哪里做错了?

最佳答案

问题是 select 的第二个参数需要是字符串的结束索引——它不是大小,而是位置。您提供的代码适用于字符串的开头,因为 n 为零,因此您的位置和大小恰好相同。我认为您可以通过将最后一行更改为来解决您的问题:

ta.select(n,n + t1.getText().length());

在工作情况下(在字符串的开头),n = 0,因此我们没有进行任何更改。如果不起作用,这个额外的“n +”会将我们移动到需要完成的位置。

关于java - 如何在 Swing 的 TextArea 中选择特定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38006480/

相关文章:

java - 如何在 JAX-RS Web 服务中返回 XML 格式的响应?

java - 广播接收器未接收到广播

java - 使用 Spring Data REST 的 JsonMappingException : Selects wrong serializer when @Id is removed from the list that that is being mapped

java - TDD:如何创建测试初始值的测试

java - 如何获取列表对象的索引

java - 防止向用户显示任何异常?

java - 如何在Java apache中添加超链接的空间地址

java - Sed 用另一个文本替换多行 Java 注释

java - 从相机/图库加载时图像位图会旋转 [Android 9]

java - Gradle 扩展作为 Gradle 项目中的源代码