Показать строку в которой будет искомое слово - Java
Формулировка задачи:
Доброго времени суток. У меня возник такой вот вопрос по библиотеке Swing и jFrame. Мне надо организовать поиск целой строки в файле. В качестве запрашиваемого аргумента мы вводим 1 слово из этой строки в поле поиска размещенное на jFrame. Затем мы нажимаем кнопку поиска, и вот собственно вопрос. Как задать эту самую кнопку поиска, что мне в ней писать? Как считывать информацию из тестового файла я знаю (благо подсказали мне добрые форумчане).
Как вы уже успели понять, текстовая информация из файла записывается в коллекцию типа ArrayList. И мне как то надо прописать цикл который бы искал строку с нужным мне словом и выводил её целиком в соответствующее поле типа jTextField. Тема с swing и чтением из текстовых фалов для меня нова и я в ней ничего не понимаю, помогите мне в ней разобраться. Вот то что я успел сделать, как вы можете понять тут чуть больше чем ничего
Программу пробую писать в Netbeans, помогите пожалуйста, а то уже неделю сижу над этой задачей и ничего конкретного в Google найти не могу
public static void main(String args[]) throws IOException{
Search books = new Search ();
String line = null;
ArrayList<Dic> list = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream("Dict.txt"), "Cp1251"))) {
while ((line = reader.readLine()) != null) {
String[] items = line.split("\n");
list.add(new Dic (items[0]));
}
}
catch (Exception ex) {
} package searcher;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import javafx.scene.text.Text;
/**
*
* @author
*/
public class Search extends javax.swing.JFrame {
private ArrayList<Dic> worr;
private void setArr(ArrayList<Dic> worr) {
this.worr = worr;
}
public ArrayList<Dic> getArr() {
return worr;
}
public Search() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jTextField1 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
Search = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
Search.setText("Найти");
Search.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SearchActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextField1)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Search)
.addContainerGap(26, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Search))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(194, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void SearchActionPerformed(java.awt.event.ActionEvent evt) {
if (worr.equals(jTextField1.getText().trim())){
} else {
jTextArea1.setText(jTextField1. getText() + "-");
}
}
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String args[]) throws IOException{
Search books = new Search ();
String line = null;
ArrayList<Dic> list = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream("Dict.txt"), "Cp1251"))) {
while ((line = reader.readLine()) != null) {
String[] items = line.split("\n");
list.add(new Dic (items[0]));
}
}
catch (Exception ex) {
}
books.setArr(list);
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Search().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton Search;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}Решение задачи: «Показать строку в которой будет искомое слово»
textual
Листинг программы
package test;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.*;
/**
*
* @author Nicholas White
*/
public class Search extends JFrame implements ActionListener {
JTextField jTextField1;
JTextArea jTextArea1;
public Search() {
initComponents();
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Search().setVisible(true);
}
});
}
private void initComponents() {
jTextField1 = new javax.swing.JTextField();
JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
JButton Search = new javax.swing.JButton("Search");
Search.addActionListener(this);
JPanel panel = new JPanel(new BorderLayout(50, 50));
panel.add(jTextField1, BorderLayout.NORTH);
panel.add(Search, BorderLayout.CENTER);
panel.add(jScrollPane1, BorderLayout.SOUTH);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setContentPane(panel);
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
pack();
}
@Override
public void actionPerformed(ActionEvent e) {
String searchLine = jTextField1.getText();
String line = null;
try{
BufferedReader reader = new BufferedReader(new FileReader("C:/Users/Пользователь/Documents/NetBeansProjects/Test/build/classes/test/Test.txt"));
while((line = reader.readLine()) != null){
if(line.contains(searchLine)){
jTextArea1.append(line + "\n");
}
}
} catch(IOException ex) {
System.err.println("Couldnt find file");}
}
}