Java image viewer

3.8k Views Asked by At

I am trying to create an image viewer the the idea is that the viewer will pop up with one image a random button and a reset button to let the user to click the button and cycle through a list of different images randomly. I can open the viewer but cant get the viewer to rotate the images. here is the code. I would be grateful for any help

import java.awt.*;
import javax.swing.*;


public class CreateImage extends JFrame {
    private JButton jbtRandom = new JButton("Random");
    private JButton jbtReset = new JButton ("Reset");

   public CreateImage() {

        JPanel panel = new JPanel();
        panel.add(jbtRandom);
        panel.add(jbtReset);


        Image image1 = new ImageIcon("kobe.jpg").getImage();
        Image image2 = new ImageIcon("joe.jpg").getImage();
        Image image3 = new ImageIcon("sidney.jpg").getImage();
        Image image4 = new ImageIcon("bugs.gif").getImage();
        Image image5 = new ImageIcon("mac.jpg").getImage();
        Image image6 = new ImageIcon("snooki.jpg").getImage();

        setLayout(new GridLayout(2, 0, 5, 5));
        add(new ImageViewer(image1));


        /*add(new ImageViewer(image2));// <== extra lines form first viewer attempt  
         add(new ImageViewer(image3)); //, <== which showed all images at once.
         add(new ImageViewer(image4));// <== only need one image and to flip 
         add(new ImageViewer(image5));// <== to a random image
         add(new ImageViewer(image6));// <==      */
    }

    public class ImageViewer extends JPanel {
        private java.awt.Image image;
        private boolean stretched = true;
        private int xCoordinate;
        private int yCoordinate;
        public ImageViewer() {

        }
        public ImageViewer(Image image) {
            this.image = image;
       }

        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            if (image != null)
                if (isStretched())
                    g.drawImage(image, xCoordinate, yCoordinate, getWidth(), getHeight(), this);
                else
                    g.drawImage(image, xCoordinate, yCoordinate, this);
        }
        public java.awt.Image getImage() {
        return image;
        }

        public void setImage(java.awt.Image image) {
            this.image = image;
            repaint();
        }

        public boolean isStretched() {
            return stretched;
        }

        public void setStretched(boolean stretched) {
            this.stretched = stretched;
            repaint();
        }

        public int getXCoordinate() {
            return xCoordinate;
        }

        public void setXCoodinate(int xCoordinate) {
            this.xCoordinate = xCoordinate;
        }

        public int getYCoordinate() {
            return xCoordinate;
        }

        public void setYCoodinate(int yCoordinate) {
            this.yCoordinate = yCoordinate;
            repaint();
        }
    }

    public static void main(String[] args) {
        JFrame frame = new CreateImage();
        frame.setTitle("Random Image-Click The Button");
        frame.add(new JButton("Random"));
        frame.add(new JButton("Reset"));
        frame.setSize(400, 320);
        frame.setLocationRelativeTo(null); //Center Frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

    }
}
1

There are 1 best solutions below

0
On

Here are some steps you need to take to get started:

1) Instead of just creating and throwing away the images. Put them somewhere - like in a List or Map. 2) Add an event handler to your Random button. 3) On clicking that button, choose and show a new image from your List or Map.

Once you've done that post another more specific question if you're still stuck. You're quite far away from getting your end-goal at the moment so for now just focus on responding to a user event (clicking your buttons) to start with.

Refer to this to get started.