MainClass.java Source code

Java tutorial

Introduction

Here is the source code for MainClass.java

Source

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Popup;
import javax.swing.PopupFactory;
import javax.swing.Timer;

public class MainClass {

    static final Random random = new Random();

    static class ButtonActionListener implements ActionListener {
        public void actionPerformed(ActionEvent actionEvent) {
            System.out.println("Selected: " + actionEvent.getActionCommand());
        }
    }

    static class ShowPopupActionListener implements ActionListener {
        private Component component;

        ShowPopupActionListener(Component component) {
            this.component = component;
        }

        public synchronized void actionPerformed(ActionEvent actionEvent) {
            JButton button = new JButton("Hello, World");
            ActionListener listener = new ButtonActionListener();
            button.addActionListener(listener);
            PopupFactory factory = PopupFactory.getSharedInstance();
            int x = random.nextInt(200);
            int y = random.nextInt(200);
            final Popup popup = factory.getPopup(component, button, x, y);
            popup.show();
            ActionListener hider = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    popup.hide();
                }
            };
            // Hide popup in 3 seconds
            Timer timer = new Timer(3000, hider);
            timer.start();
        }
    }

    public static void main(final String args[]) {
        JFrame frame = new JFrame("Button Popup Sample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        ActionListener actionListener = new ShowPopupActionListener(frame);

        JButton start = new JButton("Pick Me for Popup");
        start.addActionListener(actionListener);
        frame.add(start);

        frame.setSize(350, 250);
        frame.setVisible(true);
    }
}