private ExtractProgressDialog(Frame owner, boolean modal) { super(owner, "Extracting...", modal); final JPanel backgroundPanel = new JPanel(); extractProperties = new ExtractProperties(); progressPanel = new ExtractProgressPanel(); settingsPanel = new ExtractSettingsPanel(extractProperties); cancelButton = progressPanel.cancelButton; cancelButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { signalCancel(); } }); progressPanel.addShowSettingsButtonListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean selected = progressPanel.getShowSettingsButtonSelected(); if (selected) backgroundPanel.add(settingsPanel); else backgroundPanel.remove(settingsPanel); pack(); } }); backgroundPanel.setLayout(new BoxLayout(backgroundPanel, BoxLayout.PAGE_AXIS)); backgroundPanel.add(progressPanel); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener( new WindowAdapter() { @Override public void windowClosing(WindowEvent we) { requestCloseWindow(); } }); add(backgroundPanel); pack(); setLocationRelativeTo(null); setResizable(false); }