Please Help! Changing a graphic via a menu with listeners

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • nt5515
    New Member
    • Feb 2008
    • 10

    Please Help! Changing a graphic via a menu with listeners

    hey Im trying to make a game of pairs (the memory game) i have set up a grid which displays a graphic for the card back. im trying to link the edit menu to choose the graphic to be displayed. i've set up a string variable called deck which will contain the path to the required image. and actionlisteners DA and DB corresponding to which style is choosen in the menu. I had to declare the deck to some initial image so it can load.
    How do i impliment the change once the menuitem has been selected?
    below is my code so far.


    Code:
     
    import javax.swing.*;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import javax.swing.event.*;
    
    import java.net.*;
    
    
    
    class Filenew extends JFrame implements ActionListener
    
    {
    
       JMenuItem Exit, DA, DB, About, Instructions;
    
       Filenew gameFrame = null;
    
       String deck = "images/aqua.jpg";
       JPanel[][] q;
    
       public static void main (String[] args)
    
       {
    
          Filenew frame = new Filenew();
    
          frame.display();
    
       }
    
       public Filenew()
       {
          this(2, 2);
       }
    
       public Filenew(int x, int y)
    
       {
          setBackground(Color.red);
    
          JMenuBar menubar = new JMenuBar();
    
          setJMenuBar(menubar);
    
          JMenu filemenu = new JMenu("File");
    
          menubar.add(filemenu);
    
          JMenu New = new JMenu("New");
          JMenuItem New43 = new JMenuItem("4x3");
          New.add(New43);
          JMenuItem New44 = new JMenuItem("4x4");
          New.add(New44);
          JMenuItem New54 = new JMenuItem("5x4");
          New.add(New54);
    
          Exit = new JMenuItem("Exit");
    
          filemenu.add(New);
    
          filemenu.add(Exit);
    
          JMenu editmenu = new JMenu("Edit");
    
          menubar.add(editmenu);
          JMenuItem ChangeD = new JMenu("Change Deck");
          editmenu.add(ChangeD);
          JMenuItem DA = new JMenuItem("Style 1");
          ChangeD.add(DA);
          JMenuItem DB = new JMenuItem("Style 2");
          ChangeD.add(DB);
          JMenuItem ChangeB = new JMenu("Change Background");
          editmenu.add(ChangeB);
          JMenuItem BA = new JMenuItem("Style 1");
          ChangeB.add(BA);
          JMenuItem BB = new JMenuItem("Style 2");
          ChangeB.add(BB);
    
    
    
          New43.setActionCommand("43");
          New44.setActionCommand("44");
          New54.setActionCommand("54");
          Exit.setActionCommand("Exit");
          DA.setActionCommand("DA");
          DB.setActionCommand("DB");
    
          New43.addActionListener(this);
          New44.addActionListener(this);
          New54.addActionListener(this);
    
          Exit.addActionListener(this);
          DA.addActionListener(this);         
    
          DB.addActionListener(this);
    
    
    
    
          getContentPane().setLayout(new GridLayout(x,y));
    
          q = new JPanel[x][y];
    
          for (int i=0; i<x; i++)
    
          {
    
             for (int j=0; j<y; j++)
    
             {
    
                q[i][j] = new JPanel();
    
                getContentPane().add(q[i][j]);
                URL address = myscene.class.getResource(deck);
    
                ImageIcon image = new ImageIcon(address);
    
                JLabel cardback = new JLabel(image);
    
                q[i][j].add(cardback);
    
             }
    
          }
    
       }
    
    
    
       void display()
    
       {
    
          setTitle("The World's Most Amazing Game of Pairs to Ever Have Existed");
    
          setDefaultCloseOperation(EXIT_ON_CLOSE);
    
          setVisible(true);
          setSize(600,400);
    
          setMinimumSize(new Dimension (600,400));
    
    
       }
    
    
    
       protected void Exit()
    
       {
    
          System.exit(0);
    
       }
    
    
    
       public void actionPerformed(ActionEvent event)
       {
          String source = event.getActionCommand(); 
    
          if(source.equals ("43"))
          {
             newGame(3, 4);
          }
          if(source.equals("44"))
          {
             newGame(4, 4);
          }
          if(source.equals("54"))
          {
             newGame(4, 5);
          }
          if(source.equals("Exit"))
    
          {
    
             Exit();
    
          }
          if(source.equals("DA"))
          {
             deck = "images/pairs.jpg";
    
          }
          if(source.equals("DB"))
          {
             deck = "images/carddeck.jpeg";
          }
    
      
    
         
    
       }
       public void newGame(int x, int y)
       {
          closeGame();
          gameFrame = new Filenew(x, y);
          gameFrame.display();
       }
       public void closeGame()
       {
          if (gameFrame != null)
          {
             gameFrame.dispose();
             gameFrame = null;
          }
       }
    
    }
    Any suggestion welcome
  • BigDaddyLH
    Recognized Expert Top Contributor
    • Dec 2007
    • 1216

    #2
    Call setIcon(yourNew IconImage) on the JLabel(s) whose image you want to change.

    Comment

    Working...