Показать строку в которой будет искомое слово - 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");} } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д