Title

Saturday, 7 February 2015

Java GUI Update Existing Image


I am writing a sort of find me application where the user has to click on a certain area of the image to win the game. When the user clicks on the right location, I would like the image to update and display a yellow circle around the area.

import java.awt.*;  import java.awt.event.*;  import javax.swing.*;    public class findMe {  static ImageIcon park = new ImageIcon("park.jpg");  static ImageIcon newPark = new ImageIcon("newPark.jpg");  static JLabel image = new JLabel(park);  static JPanel big = new JPanel();  static JLabel text = new JLabel("Clicks: 0");  static int i = 10;  static boolean winGame = false;    public static void main(String[] args) {   //Create the frame   JFrame frame = new JFrame("Find Me");   frame.setSize(935, 700); //Setting the size of the frame     //Declaring the Mouse listener   MouseHandler listener = new MouseHandler();     big.add(image);   big.add(text);     image.addMouseListener(listener);     JOptionPane.showMessageDialog (null, "Hint: Sometimes the head of beauty isn't as bright as you'd think.");     frame.getContentPane().add(big); //panel to frame    frame.setVisible(true); // Shows frame on screen   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  }    private static class MouseHandler implements MouseListener {     public void mousePressed(MouseEvent e) {   if (e.getX() >= 454 && e.getX() <= 480 && e.getY() >= 600 && e.getY() <= 625) {   image = new JLabel(newPark);   JOptionPane.showMessageDialog (null, "You've found it!");   winGame = true;   } else if (winGame == false) {   i--;   text.setText("Clicks left: " + i);   if (i == 0) {   System.exit(0);   }   }   }     public void mouseReleased(MouseEvent e) {   }     public void mouseEntered(MouseEvent e) {   }     public void mouseExited(MouseEvent e) {   }     public void mouseClicked(MouseEvent e) {     }  }    }

The area of code that updates the image is:

if (e.getX() >= 454 && e.getX() <= 480 && e.getY() >= 600 && e.getY() <= 625) {   image = new JLabel(newPark);   JOptionPane.showMessageDialog (null, "You've found it!");   winGame = true;  }

newPark is an edited version of the original image, with a yellow circle around the win area. Is this the proper way to redeclare and update the image? Because it's not working for me like this.

Answer

No comments:

Post a Comment