Java 如何在Swing中的文本区域中选择特定文本

Java 如何在Swing中的文本区域中选择特定文本,java,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());

因此,我编写了一个代码,在文本区域中搜索一个单词。代码如下:

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是文本区域,t1是用户输入要搜索的单词的文本字段。我的问题是,当我写一个类似这样的字符串时——他是一个好孩子,并且搜索,比如说,good,那么good没有被选中,但是当我搜索“He”时,他被选中。我基本上想说的是,如果我在文本字段中输入字符串的第一个单词,它将被搜索并选中,但如果我输入任何其他单词,它将不会被选中。我哪里做错了?

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

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

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

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

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

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

那么您是否正在寻找搜索第一个单词的方法?不,我正在搜索字符串中的任何单词对不起,兄弟,我搞错了,很高兴知道。不用担心,我必须根据ta.getText()给出t1.getText()的长度,那么你在寻找搜索第一个单词的方法吗?不,我在搜索字符串中的任何单词对不起,兄弟,我知道我做错了当然,很高兴知道。不用担心,我必须根据ta.getText()给出t1.getText()的长度