import java.awt.event.*; import java.awt.*; import javax.swing.*; public class gui extends JFrame{ private JLabel info; private JButton start, stop; private JProgressBar progressBar; public gui() { //create an object of EventHandler EventHandler listener = new EventHandler(); EventHandler2 listener2 = new EventHandler2(); start = new JButton("Start download"); start.addActionListener(listener); stop = new JButton("Stop Download"); stop.addActionListener(listener2); info = new JLabel("Homestuck Downloader", SwingConstants.CENTER); progressBar = new JProgressBar(0, 100); progressBar.setValue(0); progressBar.setStringPainted(true); //create window, add components Container pane = getContentPane(); pane.setLayout(new GridLayout(4,1)); pane.add(info); pane.add(progressBar); pane.add(start); pane.add(stop); // 4 methods to create a window setSize(300,200); setTitle("Homestuck Downloader"); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class EventHandler implements ActionListener { public void actionPerformed(ActionEvent e) { // while working, do this setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); progressBar.setIndeterminate(true); Runnable r = new Downloader(); new Thread(r).start(); } } private class EventHandler2 implements ActionListener { public void actionPerformed(ActionEvent e) { // stop the program and return mouse and progressbar to normal setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); progressBar.setIndeterminate(false); Downloader stop = new Downloader(); } } }