Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Document;

public class Main {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.add(new TestPane());
        frame.pack();
        frame.setVisible(true);
    }

}

class TestPane extends JPanel {
    JTextField findText = new JTextField(20);
    JTextArea ta = new JTextArea(20, 40);
    Timer keyTimer;

    public TestPane() {
        setLayout(new BorderLayout());
        JPanel searchPane = new JPanel();
        searchPane.add(new JLabel("Find: "));

        searchPane.add(findText);

        add(searchPane, BorderLayout.NORTH);
        add(new JScrollPane(ta));

        try (BufferedReader reader = new BufferedReader(new FileReader(new File("c:/Java_Dev/run.bat")))) {
            ta.read(reader, "Text");
        } catch (Exception e) {
            e.printStackTrace();
        }
        ta.setCaretPosition(0);

        keyTimer = new Timer(250, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String find = findText.getText();
                Document document = ta.getDocument();
                try {
                    for (int index = 0; index + find.length() < document.getLength(); index++) {
                        String match = document.getText(index, find.length());
                        if (find.equals(match)) {
                            DefaultHighlighter.DefaultHighlightPainter highlightPainter = new DefaultHighlighter.DefaultHighlightPainter(
                                    Color.YELLOW);
                            ta.getHighlighter().addHighlight(index, index + find.length(), highlightPainter);
                        }
                    }
                } catch (BadLocationException exp) {
                    exp.printStackTrace();
                }
            }
        });
        keyTimer.setRepeats(false);

        findText.getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void insertUpdate(DocumentEvent e) {
                keyTimer.restart();
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                keyTimer.restart();
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                keyTimer.restart();
            }
        });
    }
}