import java.awt.BorderLayout; import javax.imageio.ImageWriter; import javax.imageio.event.IIOWriteProgressListener; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JOptionPane; public class WriteProgressDialog implements IIOWriteProgressListener { JLabel progressState; JProgressBar progressBar; public WriteProgressDialog() { JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); progressState = new JLabel("No Operation."); progressBar = new JProgressBar(0, 100); progressBar.setValue(0); panel.add(progressState, BorderLayout.NORTH); panel.add(progressBar, BorderLayout.CENTER); JOptionPane pane = new JOptionPane(panel, JOptionPane.PLAIN_MESSAGE); JDialog dialog = pane.createDialog(null, "Image Writing Progress"); dialog.setModal(false); dialog.show(); } public void imageStarted(ImageWriter source, int index) { progressBar.setValue(0); progressState.setText("Image Writing Is Started: No." + index); } public void imageProgress(ImageWriter source, float percentageDone) { progressBar.setValue((int)percentageDone); } public void imageComplete(ImageWriter source) { progressBar.setValue(100); progressState.setText("Image Writing Is Complete."); } public void thumbnailStarted(ImageWriter source, int index, int thumbnailIndex) { progressBar.setValue(0); progressState.setText("Thumbnail Writing Is Started."); } public void thumbnailProgress(ImageWriter source, float percentageDone) { progressBar.setValue((int)percentageDone); } public void thumbnailComplete(ImageWriter source) { progressBar.setValue(100); progressState.setText("Thumbnail Writing Is Complete."); } public void writeAborted(ImageWriter source) { progressState.setText("Writing Is Aborted."); } }