2013-03-07 4 views
0

Есть ли какая-либо функция, которую я могу использовать для фактического прохождения номера строки и строки, чтобы выделить слово в этом номере строки. Я понятия не имею, как это сделать.Выделите строку в соответствии с заданным номером строки в JtextArea

Могу загрузить мой файл в JtextArea.

АМ файла загрузки "hello.txt" содержит:

Hello, This 
is my first 
lesson in Java 
Hope You Have a nice 
Time. 

Я хочу, чтобы функция, чтобы выделить строку "первый" в строке 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"); 
} 
} 
} 
+0

См. [это] (http://stackoverflow.com/questions/13074428/how-can-i-set-each-character-to- a-different-color-background-color-in-a-jtextpan/13076649 # 13076649) и его [вариант] (http://stackoverflow.com/questions/12481698/highlighting-few-of-the-words-of -a-текстовый файл открыт-в-кадр/12482171 # 12482171). Также читайте в [Concurrency in Siwng] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html) и не вызывайте 'setSize' на' JFrame', используя соответствующий 'LayoutManager' и/или переопределить 'getPreferredSize()' и вызвать 'pack()' на 'JFrame', прежде чем устанавливать его видимым. –

ответ

2

Начните с методов JTextArea:

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

Являясь новым для Java, вы можете показать мне пример, используя коды, описанные в шагах. Спасибо –

+0

Я бы начал с создания метода, такого как 'highlightText (textArea, row, text)'. Затем в методе вы пытаетесь реализовать код один шаг за раз. – camickr

0

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

JTextComponent.setSelectionStart (INT), JTextComponent.setSel ectionEnd (int), JTextComponent.setSelectedTextColor (java.awt.Color)