Показать строку в которой будет искомое слово - Java

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. У меня возник такой вот вопрос по библиотеке Swing и jFrame. Мне надо организовать поиск целой строки в файле. В качестве запрашиваемого аргумента мы вводим 1 слово из этой строки в поле поиска размещенное на jFrame. Затем мы нажимаем кнопку поиска, и вот собственно вопрос. Как задать эту самую кнопку поиска, что мне в ней писать? Как считывать информацию из тестового файла я знаю (благо подсказали мне добрые форумчане).
 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) {
        }
Как вы уже успели понять, текстовая информация из файла записывается в коллекцию типа ArrayList. И мне как то надо прописать цикл который бы искал строку с нужным мне словом и выводил её целиком в соответствующее поле типа jTextField. Тема с swing и чтением из текстовых фалов для меня нова и я в ней ничего не понимаю, помогите мне в ней разобраться. Вот то что я успел сделать, как вы можете понять тут чуть больше чем ничего
 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                   

}
Программу пробую писать в Netbeans, помогите пожалуйста, а то уже неделю сижу над этой задачей и ничего конкретного в Google найти не могу

Решение задачи: «Показать строку в которой будет искомое слово»

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");}
    }
    
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.583 из 5
Похожие ответы