2016-12-27 10 views
-1

私はカードレイアウトを完全にうまく機能させましたが、今度はJLabelであるオブジェクトキャラクタにキーストーンを追加して、キャラクタを押し上げるたびに移動する必要がありますが、何もない!キーリスナーにもかかわらず移動しない位置

クリックしたときに移動するボタンで置き換えてみましたが、完全に正常に機能しました。また、私は私の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) { 


    } 

}

+0

* "カードレイアウトを動作させたいが何らかの理由で動作しない" *理由は非常に明確で、プログラマはこれらの問題を定期的に処理する必要があります。 [スタックトレースとは何ですか?アプリケーションエラーをデバッグするにはどうすれば使用できますか?](http://stackoverflow.com/q/3988788/418556)&[Null Pointer Exceptionとは何ですか?それ?](http://stackoverflow.com/q/218384/418556) –

+0

あなたの質問をd​​efaceしないでください。これはサイトのルールに完全に違反しています。 –

答えて

1

です。

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

またはgameパネルに追加する前にmainmenu & loginpanelを初期化します。

+0

これは完璧にうまく動作しました。ありがとうございました!!! –

+0

それではアップしてください.. !!! – Pradnyarani

+0

私はそうしましたが、15歳以上の私の評判のために私はそうすることができません –

0

あなたはgame.add(loginPanel, "2")loginPanelを呼び出すときに、あなたのプログラムに次のコードを追加しますnull

関連する問題