Есть ли у кого-нибудь идеи о том, как я могу искать текстовый файл и перечислять результаты в JComponent, например JPanel.
Я пытался решить эту проблему уже два дня, но безуспешно, если я действительно оценю ответ. Заранее большое спасибо.
Я пытался написать класс, который обрабатывает поисковые запросы в текстовом файле. Моя основная цель - получить строки в текстовом файле, содержащие ключевые слова для поиска, введенные в JTextField, и распечатать их в соответствующем JComponent (что-то вроде JTextField, JTextPane, в зависимости от того, что лучше всего подходит).
Я бы хотел, чтобы результаты поиска отображались в столбцах, например, как отображаются результаты поиска Google, чтобы каждая строка из текстового файла печаталась в отдельной строке. Мне сказали, что лучше всего использовать ArrayList. Я действительно не знаю, как это сделать. Я собирал идеи отовсюду, и вот что у меня есть:
Заранее большая признательность. Я очень новичок в Java. Я был в этом весь день, пытаясь понять это правильно, и не продвинулся далеко. Готов попробовать все предложенное, даже новый подход.
// The class that handles the search query
// Notice that I've commented out some parts that show errors
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JTextPane;
public class Search {
public static String path;
public static String qri;
public Search(String dTestFileDAT, String qry) {
path = dTestFileDAT;
qri = qry;
}
public static JTextPane resultJTextPane;
public static List<String> linesToPresent = new ArrayList<String>();
public static List<String> searchFile(String path, String match){
File f = new File(path);
FileReader fr;
try {
fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String line;
do{
line = br.readLine();
Pattern p = Pattern.compile(match);
Matcher m = p.matcher(line);
if(m.find())
linesToPresent.add(line);
} while(line != null);
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// resultJTextPane = new JTextPane();
// resultJTextPane = (JTextPane) Home.BulletinsJPanel.add(linesToPresent);
return linesToPresent;
}
}
// This handles the click event to take the query. Notice that I've commented out some parts that show errors
private void mouseClickedSearch(java.awt.event.MouseEvent evt) {
Search fs = new Search("/D:/TestFile.dat/", "Text to search for");
// searchResultsJPanel.add(Search.searchFile("/D:/TestFile.dat/", "COLE"));
// searchResultsJTextField.add(fs);
}