-1

I made the Card Layout Working completely fine but what happened now is I added a keylistener to the object character which is a JLabel so whenever the person presses up the character should move up but it does absolutely nothing!

I also tried replacing it with a button which moves it when clicked and it worked completely fine. Also I tried changing the event meaning I changed that if they press up then the image of the town map would change but still no effect so it seems there is something wrong with my KeyListener

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.*; import javax.swing.*;

@SuppressWarnings({ "unused", "serial" }) public class FinalBlowzXC extends JFrame implements KeyListener{

public static JPanel game=new JPanel();
public static JPanel mainmenu=new JPanel(null);
public static JPanel loginpanel=new JPanel(null);
public static JPanel tutorial=new JPanel(null);
public static JPanel registration=new JPanel(null);
public static JPanel town_map=new JPanel(null);
public JTextField username= new JTextField("Username");
public JTextField password=new JTextField("Password");
public  JLabel bglogin=new JLabel();
public JLabel character=new JLabel();
public  JButton log_in=new JButton();
public  JButton register=new JButton();
CardLayout page= new CardLayout();
public String level="";
public int charx=350;
public int chary=435;

public static void main(String []args)
{
    new FinalBlowzXC().setVisible(true);
}

public FinalBlowzXC()
{
    super("Final Blowz Xchanged");
    setSize(640,510);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    game.setLayout(page);
    game.add(mainmenu, "1");
    game.add(loginpanel, "2");
    game.add(tutorial, "3");
    game.add(registration, "4");
    game.add(town_map, "5");
    add(game);
    opening();
}

    public void opening()
    {
        page.show(game, "1");
        JLabel bgmainmenu;
        JButton start;
        JButton exit;
        bgmainmenu = new JLabel();
        start = new JButton();
        exit = new JButton();

        bgmainmenu.setIcon(new ImageIcon(getClass().getResource("/FF-XV.jpg")));
        bgmainmenu.setBounds(0,0,640,480);
        mainmenu.add(bgmainmenu);
        mainmenu.add(start);
        start.setBounds(280, 360, 70, 20);
        start.setBorder(null);
        start.setBorderPainted(false);
        start.setContentAreaFilled(false);
        start.setOpaque(false);
        start.addActionListener(new Start());
        exit.setBounds(280, 385, 70, 20);
        mainmenu.add(exit);
        exit.setBorder(null);
        exit.setBorderPainted(false);
        exit.setContentAreaFilled(false);
        exit.setOpaque(false);
        exit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });
    }


    class Start implements ActionListener{

    public void actionPerformed(ActionEvent e) {    
            login();

    }

}

    public void login()
    {
        page.show(game, "2");

        bglogin.setIcon(new ImageIcon(getClass().getResource("/FF-XV Login.jpg")));
        bglogin.setBounds(0, 0, 640, 480);


        username.setBounds(300, 285, 85, 15);
        username.setBorder(null);
        username.setForeground(Color.WHITE);
        username.setOpaque(false);

        password.setBounds(300, 310, 85, 20);
        password.setBorder(null);
        password.setForeground(Color.WHITE);
        password.setOpaque(false);

        log_in.setBounds(280, 335, 50, 45);
        log_in.setBorder(null);
        log_in.setBorderPainted(false);
        log_in.setContentAreaFilled(false);
        log_in.setOpaque(false);
        log_in.addActionListener(new Log_in());

        register.setBounds(335, 335, 55, 45);
        register.setBorder(null);
        register.setBorderPainted(false);
        register.setContentAreaFilled(false);
        register.setOpaque(false);
        register.addActionListener(new Register());

        loginpanel.add(username);
        loginpanel.add(password);
        loginpanel.add(bglogin);
        loginpanel.add(log_in);
        loginpanel.add(register);
    }

    class Log_in implements ActionListener{

        public void actionPerformed(ActionEvent e) 
        {
            Tutorial();

        }

    }

    class Register implements ActionListener{

        public void actionPerformed(ActionEvent e)
        {
            page.show(game, "4");
        }
    }

    public void Tutorial()
    {
        page.show(game, "3");
        JLabel bgtutorial=new JLabel();
        JLabel animeforward=new JLabel();
        JLabel animeright=new JLabel();
        JLabel animeleft=new JLabel();
        JButton next=new JButton();
        JLabel animebackward=new JLabel();
        bgtutorial.setIcon(new ImageIcon(getClass().getResource("/FF-XV Tutorial.jpg")));
        bgtutorial.setBounds(0, 0, 640, 480);
        animeforward.setIcon(new ImageIcon(getClass().getResource("walkanimofficialfront.gif")));
        animeforward.setBounds(115, 230, 30, 30);
        animeright.setIcon(new ImageIcon(getClass().getResource("walkanimofficialright.gif")));
        animeright.setBounds(190, 315, 30, 30);
        animeleft.setIcon(new ImageIcon(getClass().getResource("walkanimofficialleft.gif")));
        animeleft.setBounds(45, 315, 30, 30);
        animebackward.setIcon(new ImageIcon(getClass().getResource("walkanimofficialback.gif")));
        animebackward.setBounds(115, 405, 30, 30);
        next.setBounds(530, 430, 100, 30);
        next.setBorder(null);
        next.setBorderPainted(false);
        next.setContentAreaFilled(false);
        next.setOpaque(false);
        next.addActionListener(new Next());
        tutorial.add(next);
        tutorial.add(animeright);
        tutorial.add(animeleft);
        tutorial.add(animebackward);
        tutorial.add(animeforward);
        tutorial.add(bgtutorial);

    }

    class Next implements ActionListener{

        public void actionPerformed(ActionEvent e)
        {
            town();
        }
    }

    public void town()
    {
        page.show(game, "5");
        JLabel map=new JLabel();
        map.setIcon(new ImageIcon(getClass().getResource("/FF-XV Town.jpg")));
        map.setBounds(0, 0, 640, 480);
        character.setIcon(new  ImageIcon(getClass().getResource("standfront.png")));
        character.setBounds(charx, chary, 30, 35);
        town_map.add(character);
        town_map.add(map);

    }   


    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_UP)
        {
            character.setIcon(new ImageIcon(getClass().getResource("walkanimofficialfront.gif")));
            character.setLocation(character.getX(), character.getY()+5);
        }

        if(e.getKeyCode()==KeyEvent.VK_RIGHT)
        {
            character.setIcon(new ImageIcon(getClass().getResource("walkanimofficialright.gif")));
            character.setLocation(character.getX()+5, character.getY());
        }

        if(e.getKeyCode()==KeyEvent.VK_LEFT)
        {
            character.setIcon(new ImageIcon(getClass().getResource("walkanimofficialleft.gif")));
            character.setLocation(character.getX()-5, character.getY()+5);
        }

        if(e.getKeyCode()==KeyEvent.VK_DOWN)
        {
            character.setIcon(new ImageIcon(getClass().getResource("walkanimofficialback.gif")));
            character.setLocation(character.getX(), character.getY()-5);
        }

    }


    public void keyReleased(KeyEvent e) {


    }

    public void keyTyped(KeyEvent e) {


    }

}

Hovercraft Full Of Eels
  • 283,665
  • 25
  • 256
  • 373
  • *"I want the card layout to work but for some reason it is not working"* The reason is very specific, and programmers need to deal with these types of problems regularly. See [What is a stack trace, and how can I use it to debug my application errors?](http://stackoverflow.com/q/3988788/418556) & [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/q/218384/418556) – Andrew Thompson Dec 27 '16 at 06:56
  • Please do not deface your question. Doing this is totally against site rules. – Hovercraft Full Of Eels Jan 22 '17 at 20:37

2 Answers2

1

Add following code in your programme.

public static JPanel mainmenu = new JPanel();
public static JPanel loginpanel = new JPanel();

or initialize mainmenu & loginpanel before adding them into the game panel.

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
Pradnyarani
  • 302
  • 1
  • 8
0

when you call game.add(loginPanel, "2") loginPanel is null

Roberto Attias
  • 1,883
  • 1
  • 11
  • 21