import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GetAtlanticImages implements ActionListener { private JFrame frame = new JFrame(); public static final int NBRIMAGES = 12; private Image[] images = new Image[NBRIMAGES]; private Timer timer = new Timer(1000, this); int imageIndex = 0; ImageViewer image = new ImageViewer(); // JPanel displays images on frame SatelliteDate imageTime; public GetAtlanticImages() { imageTime = new SatelliteDate(); start(); } public void start() { frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); imageIndex = 0; frame.setVisible(true); fillArray(); addControlPanel(); image.setImage(images[imageIndex]); frame.add(image, BorderLayout.CENTER); frame.setVisible(true); timer.start(); } public void addControlPanel() { JPanel controlPanel = new JPanel(); JButton again = new JButton("Again"); controlPanel.add(again); again.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { timer.stop(); imageIndex = 0; image.setImage(images[imageIndex]); timer.start(); } }); frame.add(controlPanel, BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e) { image.setImage(images[++imageIndex]); // stop the time at the last index if (imageIndex == NBRIMAGES - 1) timer.stop(); } public void fillArray() { JLabel message = new JLabel("... Looking up URLS ..."); frame.add(message, BorderLayout.CENTER); for (int i=0;i<12;i++) { String datePart = imageTime.toString(); String urlName = getURL(datePart); images[i] = ImageViewer.createImage(urlName); message.setText(" ... Loading File " + (i+1) + " from URL " + urlName + " ... "); imageTime.addHours(2); } frame.remove(message); } /** gets URLs and stores them in images * assumes that f has a border layout */ private String getURL (String datePart) { return "http://www.goes-arch.noaa.gov/HUIR" + datePart + "45.GIF"; } public static void main(String[] args) { new GetAtlanticImages(); } }