import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ProgressWindow implements ActionListener, WindowListener { public ProgressWindow() { numLabels = 1; aStopped = false; } public void setNumLabels(int num) { numLabels = num; } public void show() { frame = new JFrame(); frame.addWindowListener(this); frame.setDefaultCloseOperation(0); JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BoxLayout(mainPanel, 1)); //?? mainPanel.add(Box.createVerticalStrut(20)); labels = new JLabel[numLabels]; for(int i = 0; i < numLabels; i++) { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, 0)); JLabel label = new JLabel(); //?? panel.add(Box.createHorizontalStrut(20)); panel.add(label); //?? panel.add(Box.createHorizontalGlue()); mainPanel.add(panel); labels[i] = label; //?? mainPanel.add(Box.createVerticalStrut(5)); } JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, 0)); progressBar = new JProgressBar(); //?? panel.add(Box.createHorizontalStrut(20)); panel.add(progressBar); //?? panel.add(Box.createHorizontalStrut(20)); mainPanel.add(panel); aCancel = new JButton("Cancel"); // , cIconLoader.CANCEL); aCancel.addActionListener(this); //?? mainPanel.add(Box.createVerticalStrut(20)); JPanel lButton = new JPanel(new FlowLayout(2)); lButton.add(aCancel); mainPanel.add(lButton); frame.getContentPane().add(mainPanel); frame.pack(); setSize(500, 200); frame.show(); } public void actionPerformed(ActionEvent e) { if(e.getSource() == aCancel) aStopped = true; } public void windowActivated(WindowEvent windowevent) { } public void windowClosed(WindowEvent windowevent) { } public void windowClosing(WindowEvent e) { aStopped = true; } public void windowDeactivated(WindowEvent windowevent) { } public void windowDeiconified(WindowEvent windowevent) { } public void windowIconified(WindowEvent windowevent) { } public void windowOpened(WindowEvent windowevent) { } public void setTitle(String title) { frame.setTitle(title); } public void setSize(int x, int y) { frame.setSize(x, y); centerInContainer(frame, Toolkit.getDefaultToolkit().getScreenSize()); } public void setLabelText(int i, String s) { labels[i].setText(s); } public void setProgress(int percent) { progressBar.setValue(percent); } public void hide() { frame.setVisible(false); frame.dispose(); } private void centerInContainer(Component component, Dimension containerDimension) { Dimension sz = component.getSize(); int x = (containerDimension.width - sz.width) / 2; int y = (containerDimension.height - sz.height) / 2; component.setLocation(x, y); } private JFrame frame; private int numLabels; private JLabel[] labels; private JProgressBar progressBar; private static final int INSET = 20; private static final int SEPARATOR = 5; public boolean aStopped; private JButton aCancel; }