Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Frame;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.border.EmptyBorder;

public class Main {
    public static void main(String[] args) {
        JFrame f = new JFrame();
        final ConfirmDialog dialog = new ConfirmDialog(f);
        final JTree tree = new JTree();
        tree.setVisibleRowCount(5);
        final JScrollPane treeScroll = new JScrollPane(tree);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton b = new JButton("Choose Tree Item");
        b.addActionListener(e -> {
            int result = dialog.showConfirmDialog(treeScroll, "Choose an item");
            if (result == ConfirmDialog.OK_OPTION) {
                System.out.println(tree.getSelectionPath());
            } else {
                System.out.println("User cancelled");
            }
        });
        JPanel p = new JPanel(new BorderLayout());
        p.add(b);
        p.setBorder(new EmptyBorder(50, 50, 50, 50));
        f.setContentPane(p);
        f.pack();
        f.setLocationByPlatform(true);
        f.setVisible(true);

    }
}

class ConfirmDialog extends JDialog {

    public static final int OK_OPTION = 0;
    public static final int CANCEL_OPTION = 1;

    private int result = -1;

    JPanel content;

    public ConfirmDialog(Frame parent) {
        super(parent, true);

        JPanel gui = new JPanel(new BorderLayout(3, 3));
        gui.setBorder(new EmptyBorder(5, 5, 5, 5));
        content = new JPanel(new BorderLayout());
        gui.add(content, BorderLayout.CENTER);
        JPanel buttons = new JPanel(new FlowLayout(4));
        gui.add(buttons, BorderLayout.SOUTH);

        JButton ok = new JButton("OK");
        buttons.add(ok);
        ok.addActionListener(e -> {
            result = OK_OPTION;
            setVisible(false);
        });

        JButton cancel = new JButton("Cancel");
        buttons.add(cancel);
        cancel.addActionListener(e -> {
            result = CANCEL_OPTION;
            setVisible(false);
        });
        setContentPane(gui);
    }

    public int showConfirmDialog(JComponent child, String title) {
        setTitle(title);
        content.removeAll();
        content.add(child, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(getParent());
        setVisible(true);
        return result;
    }
}