Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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_File_Jtextarea - Fatal编程技术网

如何在Java中通过开始和结束位置突出显示JTextArea中的字符串

如何在Java中通过开始和结束位置突出显示JTextArea中的字符串,java,file,jtextarea,Java,File,Jtextarea,我有一个文本文件正在JTextArea中读取 我有另一个程序,它给我一个字符串在文本文件中的开始和结束位置 但当我在JTextArea中应用Highlighter时,它并没有突出显示我想要的内容 我的文本文件包含: public class John { public static void main(String[] args) { System.out.println("Hello World"); in x; } } 我有一个编译器,它提供了在这种格式下发生

我有一个文本文件正在JTextArea中读取

我有另一个程序,它给我一个字符串在文本文件中的开始和结束位置

但当我在JTextArea中应用Highlighter时,它并没有突出显示我想要的内容

我的文本文件包含:

public class John {

public static void main(String[] args)
{
    System.out.println("Hello World");

    in x;

    }
}

我有一个编译器,它提供了在这种格式下发生错误的位置:

Code: compiler.err.cant.resolve.location
Kind: ERROR
Line Number: 7
End position: 118
Start Position: 116
strong text*但当我在高亮代码中使用这些位置时,它不会突出显示我想要的内容。 例如,“in”只能是荧光灯。这是我得到的输出。我相信在JTextArea中加载位置时,位置正在发生变化。*strong text

荧光灯代码:

  import java.awt.*;
  import java.io.FileReader;

  import javax.swing.*;
  import javax.swing.text.*;

  public class KerlovHighlighter {

private static final long serialVersionUID = 1L;
private Highlighter.HighlightPainter cyanPainter;
private Highlighter.HighlightPainter redPainter;

public KerlovHighlighter() {
    JFrame frame = new JFrame();
    JTextPane textPane = new JTextPane();
    try {
        textPane.read(new FileReader("C:\\Users\\Antish\\workspace\\Testing\\src\\MyC.java"), null);
      } catch (Exception e) {
        System.out.println("Failed to load file " );
        System.out.println(e);
      }
    JScrollPane scrollPane = new JScrollPane(textPane);
    frame.add(scrollPane, BorderLayout.CENTER);//  Highlight some text
    cyanPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.cyan);
    redPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.red);
    try {
        textPane.getHighlighter().addHighlight(116, 118, DefaultHighlighter.DefaultPainter);

    } catch (BadLocationException ble) {
    }
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(300, 200));
    frame.setLocationRelativeTo(null);
    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            KerlovHighlighter tph = new KerlovHighlighter();
        }
    });
}
}

代码的输出:

[1]: http://prntscr.com/tuyqw "Output of Program"
原始文本文件: ?

有人能帮忙吗?谢谢

我相信在JText区域加载时,位置正在发生变化

在Windows中,新行字符串是两个字符的“\r\n”。将文本文件加载到文档中时,文档使用“\n”作为行尾字符串,该字符串仅为单个字符。因此,对于文件中的每一行,高亮显示的偏移量将减少一

此外,我们无法访问您的文本文件,因此无法查看您正在描述的内容。发布SSCCE时,请确保它是完整的。因此,您可以这样做:

//textPane.read(new FileReader("C:\\Users\\Antish\\workspace\\Testing\\src\\MyC.java"), null);
textPane.read(new FileReader("KerlovHighlighter.java"), null);

现在,如果我们执行您的代码,我们还可以读取一个有效的文本文件。

那么我将如何调用我的文本文件?JavaI指的是一个SSCCE,您可以使用源文件来演示您的问题。问题解决后,您将使用真实文件。