public GuiDriver()
    {
        createGui();

        imageChooser = new JFileChooser();
        imageChooser.addChoosableFileFilter(new ImageFileFilter());
        imageChooser.setAcceptAllFileFilterUsed(false);
        imageChooser.setCurrentDirectory(Paths.get(".").toFile());

        loadImageButton.addMouseListener(
            new MouseAdapter()
            {
                @Override
                public void mouseClicked(MouseEvent e)
                {
                    int result = imageChooser.showOpenDialog(panel1);
                    if (result == JFileChooser.APPROVE_OPTION)
                    {
                        try
                        {
                            runCircleDetection(imageChooser.getSelectedFile());
                        }
                        catch (IOException e1)
                        {
                            JOptionPane.showMessageDialog(frame, e1.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                            e1.printStackTrace();
                        }
                    }
                }
            }
        );

        radiusSlider.addChangeListener(
            new ChangeListener() {
                @Override
                public void stateChanged(ChangeEvent e)
                {
                    progressBarLabel.setText("Max Circle Radius: " + radiusSlider.getValue());
                }
            }
        );
    }