Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据JtextArea中给定的行号高亮显示字符串_Java_String_Swing_Jtextarea_Swing Highlighter - Fatal编程技术网

Java 根据JtextArea中给定的行号高亮显示字符串

Java 根据JtextArea中给定的行号高亮显示字符串,java,string,swing,jtextarea,swing-highlighter,Java,String,Swing,Jtextarea,Swing Highlighter,是否有任何函数可用于实际传递行号和字符串以突出显示该行号中的单词。我不知道如何做到这一点 我可以在JtextArea上加载我的文件 正在加载的文件“Hello.txt”包含: Hello, This is my first lesson in Java Hope You Have a nice Time. 我希望函数突出显示第1行中的字符串“first” 我的代码: import javax.swing.*; import java.util.*; import java.io.

是否有任何函数可用于实际传递行号和字符串以突出显示该行号中的单词。我不知道如何做到这一点

我可以在JtextArea上加载我的文件

正在加载的文件“Hello.txt”包含:

Hello, This
is my first
lesson in Java
Hope You Have a nice 
Time.
我希望函数突出显示第1行中的字符串“first”

我的代码:

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");  
 }  
}  
}  

从JTextArea的方法开始:

  • 请参阅
    getLineStartOffset(…)
    getLineEndOffset(…)
    方法
  • 然后可以使用
    getText(…)
    方法获取该行的所有文本
  • 然后可以使用
    String.indexOf(…)
    在文本中搜索“first”的位置
  • 现在,您可以添加从行首开始的偏移量和indexOf方法,以获取要在文档中高亮显示的文本的位置
  • 然后,您可以使用文本区域的
    getHighlighter()
    方法获取荧光笔
  • 最后,您可以使用
    addHighlight()
    方法高亮显示单词

  • 你有没有试过玩弄:

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

    参见示例及其应用。另外,在设置可见之前,请阅读并在
    JFrame
    上不要调用
    setSize
    使用适当的
    LayoutManager
    和/或覆盖
    getPreferredSize()
    并在
    JFrame
    上调用
    pack()
    。我是Java新手,您可以使用步骤中描述的代码向我展示一个示例。ThanksI将首先创建一个方法,如
    highlightText(textArea,row,text)
    。然后在方法中,您尝试一步一步地实现代码。