import java.awt.BorderLayout; import javax.imageio.ImageReader; import javax.imageio.event.IIOReadProgressListener; 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 ReadProgressDialog implements IIOReadProgressListener { JLabel progressState; JProgressBar progressBar; public ReadProgressDialog() { 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 Reading Progress"); dialog.setModal(false); dialog.show(); } public void sequenceStarted(ImageReader source, int minIndex) { progressState.setText("Sequence Is Started."); } public void sequenceComplete(ImageReader source) { progressState.setText("Sequence Is Complete."); } public void imageStarted(ImageReader source, int index) { progressBar.setValue(0); progressState.setText("Image Reading Is Started: No." + index); } public void imageProgress(ImageReader source, float percentageDone) { progressBar.setValue((int)percentageDone); } public void imageComplete(ImageReader source) { progressBar.setValue(100); progressState.setText("Image Reading Is Complete."); } public void thumbnailStarted(ImageReader source, int index, int thumbnailIndex) { progressBar.setValue(0); progressState.setText("Thumbnail Reading Is Started."); } public void thumbnailProgress(ImageReader source, float percentageDone) { progressBar.setValue((int)percentageDone); } public void thumbnailComplete(ImageReader source) { progressBar.setValue(100); progressState.setText("Thumbnail Reading Is Complete."); } public void readAborted(ImageReader source) { progressState.setText("Reading Is Aborted."); } }