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