Выделите строку в соответствии с заданным номером строки в JtextArea
Есть ли какая-либо функция, которую я могу использовать, чтобы фактически передать номер строки и строку, чтобы выделить слово в этом номере строки. Я понятия не имею, как этого добиться.
Я могу загрузить мой файл на JtextArea.
Файл загружается "Hello.txt" содержит:
Hello, This
is my first
lesson in Java
Hope You Have a nice
Time.
Я хочу, чтобы функция выделяла строку "first" в строке 1.
Мои коды:
import javax.swing.*;
import java.util.*;
import java.io.*;
public class OpenTextFileIntoJTextArea
{
public static void main(String[]args)
{
try
{
FileReader readTextFile=new FileReader("C:\\Hello.py");
Scanner fileReaderScan=new Scanner(readTextFile);
String storeAllString="";
while(fileReaderScan.hasNextLine())
{
String temp=fileReaderScan.nextLine()+"\n";
storeAllString=storeAllString+temp;
}
JTextArea textArea=new JTextArea(storeAllString);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JScrollPane scrollBarForTextArea=new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
JFrame frame=new JFrame("Open text file into JTextArea");
frame.add(scrollBarForTextArea);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
catch(Exception exception)
{
System.out.println("Error in file processing");
}
}
}
2 ответа
Решение
Начнем с методов JTextArea:
- увидеть
getLineStartOffset(...)
а такжеgetLineEndOffset(...)
методы. - тогда вы можете использовать
getText(...)
метод, чтобы получить весь текст для строки. - тогда вы можете использовать
String.indexOf(...)
искать в тексте местоположение "первого". - Теперь вы можете добавить смещение от начала строки и методы indexOf, чтобы получить расположение текста, который вы хотите выделить в документе.
- тогда вы можете использовать
getHighlighter()
метод текстовой области, чтобы получить маркер - наконец, вы можете использовать
addHighlight()
способ выделить слово
Вы пробовали поиграть с:
JTextComponent.setSelectionStart (int), JTextComponent.setSelectionEnd (int), JTextComponent.setSelectedTextColor (java.awt.Color)