Opção de Menu [Resolvido]

2 respostas
Sora

Olá gente! Estou fazendo um jogo e gostaria que as instruções fossem exibidas em um JDialog, mas não estou conseguindo fazer acessar a opção do menu, uqndo clica na opção,não acontece nada. Me ajudem, por favor!!! :cry:

public class Game extends Canvas {
    
    private BufferStrategy strategy;
    private boolean gameRunning = true;
    
    //Só vai ser true quando a lógica for aplicada no loop
    private boolean logicRequiredThisLoop = false;
    
    private String message="";
    
    /** Cria nova instância de game */
    public Game() {
    JFrame container = new JFrame("Meu Jogo");
    
    //Cria os itens do menu
    JMenuBar barra = new JMenuBar();
    JMenu opInstructions = new JMenu("Instruções");

    
    //Adiciona o item na barra
    barra.add(opInstructions);
    
    opInstructions.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null,"Quero que exiba a mensagem aqui.");
            }
        });

    //Guarda o conteudo do frame e define a resolução da tela
    JPanel panel = (JPanel) container.getContentPane();
    panel.setPreferredSize(new Dimension(800,600));
    panel.setLayout(null);
    
    //Configura o tamanho do Canvas e coloca dentro do frame
    setBounds(0,0,800,600);
    panel.add(this);
    
    //Informa á AWT que a janela não precisa ser redesenhada
    //pois isto será feito manualmente
    setIgnoreRepaint(true);
    
    container.setResizable(false);
    container.setJMenuBar(barra);
    container.setIconImage(icon.getImage());
    container.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    //Torna a janela visível
    container.pack();
    container.setVisible(true); 
    
    //Adiciona um sistema de teclas de entrada (classe KeyInputHandler() 
    //definida abaixo)para responder á tecla pressionada
    
    addKeyListener(new KeyInputHandler());
    
    //Requere o foco dos botões pressionados
    requestFocus();
     
    
    // Cria uma "Buffering Strategy" com 2 buffers para permitir que a AWT
    //possa gerenciar os gráficos acelerados
    createBufferStrategy(2);
    strategy = getBufferStrategy();
    
         
    }

Nenhum evento que eu coloco aí funciona, seja chamar uma função, fechar o programa ou até mesmo exibir um JDialog.

2 Respostas

W

Andei dando uma pesquisada e parece que tinha um bug em adicionar ActionListener no JMenu. (Nao sei se em versoes novas nao tem esse problema)

O que vc pode fazer eh adicionar essa opcao “instrucoes” como um JMenuItem e adicionar ele num JMenu “help” por exemplo. Ai funciona de boa.

//Daniel

Sora

Valeu pela ajuda, eu fiz um JMenuItem direto na barra e funcionou direitinho, :wink:

Flw!!!

Criado 19 de maio de 2008
Ultima resposta 19 de mai. de 2008
Respostas 2
Participantes 2