2013-02-23 36 views
0

上午有这是在JTextArea中被读取的文本文件。如何突出显示在JTextArea中由开始的字符串和结束位置在Java中

我还有一个程序,让我在文本文件中的字符串的开始和结束位置。

,但我在JTextArea中应用荧光笔时,它不强调我想要的。

我的文本文件包含:

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 

强大的文本* 但是当我在荧光笔代码中使用这些位置时,它不会突出显示我想要的。 E.G“in”只应该是荧光笔。这是我得到的输出。我相信这些职位正在被加载到JTextArea中时发生变化。 *强大的文本

荧光笔代码:

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" 

原文文件: http://www.mediafire.com/?aiufxocfj0xm21e

可有人help.Thank您

回答

0

我相信他们在JTextArea中加载正在改变位置。

在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); 

现在,如果我们执行你的代码,我们也有一个有效的文本文件来阅读。

+0

那么我将如何调用我的TextFile? Myc.Java – 2013-02-23 17:38:54

+0

我在谈论一个SSCCE,你使用源文件来展示你的问题。一旦问题得到解决,您就可以使用真实文件。 – camickr 2013-02-23 20:00:50

相关问题