Выделите строку в соответствии с заданным номером строки в 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:

  1. увидеть getLineStartOffset(...) а также getLineEndOffset(...) методы.
  2. тогда вы можете использовать getText(...) метод, чтобы получить весь текст для строки.
  3. тогда вы можете использовать String.indexOf(...) искать в тексте местоположение "первого".
  4. Теперь вы можете добавить смещение от начала строки и методы indexOf, чтобы получить расположение текста, который вы хотите выделить в документе.
  5. тогда вы можете использовать getHighlighter() метод текстовой области, чтобы получить маркер
  6. наконец, вы можете использовать addHighlight() способ выделить слово

Вы пробовали поиграть с:

JTextComponent.setSelectionStart (int), JTextComponent.setSelectionEnd (int), JTextComponent.setSelectedTextColor (java.awt.Color)

Другие вопросы по тегам