2014-12-10 3 views
0

Когда я установил событие Mouse_Clicked, он должен вернуться в главное меню, но ничего не делает, когда я нажимаю на мышь. Я хочу, чтобы он пошел к MENUSTATE, который является главным меню, но ничего не происходит. Мне нужна помощь, так как это школьный проект, и я не знаю, что не так.Java GameState не меняется

package GameState; 

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics2D; 
import java.awt.event.MouseEvent; 
import main.GamePanel; 

public class HelpState extends GameState { 
    private Color titleColor; 
    private Font titleFont; 

    public HelpState(GameStateManager gameStateManager) { 
     init(); 
    } 

    @Override 
    public void init() { } 

    @Override 
    public void update() { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void draw(Graphics2D g) { 
     g.setColor(titleColor); 
     g.setFont(titleFont); 

     g.clearRect(1, 1, GamePanel.WIDTH, GamePanel.HEIGHT); 
     g.drawString("Move Left: Left Arrow ", 0, 25); 
     g.drawString("Move Right: Right Arrow ", 0, 45); 
     g.drawString("Attack: A Button ", 0, 65); 
     g.drawString("Become Other Wumps: You must have things happened to", 0, 85); 
     g.drawString("you (Eg. Get smashed by a wall). After that you must press ", 0, 95); 
     g.drawString("the corresponding No. Key.", 0, 105); 
    } 

    private void select() { 
     gsm.setState(GameStateManager.MENUSTATE); 
    } 

    public void mousePressed(int m) { 
     if (m == MouseEvent.MOUSE_CLICKED) { 
      select(); 
     } 
    } 

    @Override 
    public void keyReleased(int k) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void keyPressed(int k) { 
     // TODO Auto-generated method stub 
    } 
} 
+1

ли ваша программа даже попасть в mousePressed (интермедиат м) {}? –

+1

Попытайтесь добавить @Override к методу mousePressed (int m) {}, посмотрите, что произойдет. – Victor2748

+0

'g.clearRect (1, 1, GamePanel.WIDTH, GamePanel.HEIGHT);' - плохая идея, так как фактическая ширина и высота могут отличаться от того, что, по вашему мнению, есть, также, как правило, нулевой индекс, что вы, вероятно, должны начинать с '0x0'. Рассмотрите возможность предоставления [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это приведет к меньшему путанице и лучшим ответам – MadProgrammer

ответ

0

Вы должны реализовать MouseListener для ввода ввода от мыши.

Если вы хотите, чтобы кнопка была нажата, я рекомендую вам использовать ActionListener. Если вам нужны дополнительные свойства, нажмите MouseListener.

Пример MouseListener:

import java.awt.event.MouseListener; 

public void mousePressed(MouseEvent e) { 
     saySomething("Mouse pressed position " 
        + e.getPoint(), e); 
    } 
Смежные вопросы