Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.BorderLayout;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.text.Position;
import javax.swing.tree.TreePath;

public class Main {
    JTree tree = new JTree();

    Main() {
        JPanel p = new JPanel(new BorderLayout(2, 2));
        JTextField find = new JTextField("food:pizza");
        find.addActionListener(e -> {
            boolean found = findText(find.getText());
            System.out.println(find.getText() + " found " + found);
        });
        p.add(find, BorderLayout.PAGE_START);
        tree.setVisibleRowCount(8);
        for (int row = tree.getRowCount(); row >= 0; row--) {
            tree.expandRow(row);
        }
        p.add(new JScrollPane(tree), BorderLayout.CENTER);
        JOptionPane.showMessageDialog(null, p);
    }

    public boolean findText(String nodes) {
        String[] parts = nodes.split(":");
        TreePath path = null;
        for (String part : parts) {
            int row = (path == null ? 0 : tree.getRowForPath(path));
            path = tree.getNextMatch(part, row, Position.Bias.Forward);
            if (path == null) {
                return false;
            }
        }
        tree.scrollPathToVisible(path);
        tree.setSelectionPath(path);
        return path != null;
    }

    public static void main(String[] args) {
        new Main();
    }
}