Duvida com controle de Eventos

1 resposta
gustavotorquato

Olá pessoal, estou com uma duvida aqui na hora de controlar os Eventos de um JMenuItem. Estou colocando o codigo em camadas, adicionei um evento ao meu JMenuItem miSair. Coloquei para ele fechar a aplicação, porem nao ta dando certo, é como se ele nao reconhecesse o meu evento.

Codigo da Janela:

package visual;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import static ferramentas.Utilitarios.*;

public class TelaPrincipal extends JFrame
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	
	JMenuBar menuBar1;
	public JMenu menuControle;


	JMenu menuRelatorios, menuUtilitarios;


	public JMenu menuAjuda;
	public JMenuItem miEntrada;


	public JMenuItem miCadRevendedor, miCalculadora, miTema, miSaida;

	public JMenuItem miSair;
	
	public TelaPrincipal()
	{
		nimbo();
		
		setTitle("Sistema Integrado de Estoque - SIET");
		setBounds(200,100,800,600);
		setResizable(false);
		getContentPane().setBackground(Color.white);
		getContentPane().setLayout(null);
		
		menuBar1 = new JMenuBar();
		
		menuControle = new JMenu("Controle");
		menuRelatorios = new JMenu("Relatorios");
		menuUtilitarios = new JMenu("Utilitarios");
		menuAjuda = new JMenu("Sair");
		
		miEntrada = new JMenuItem("Entrada de Produtos");
		miSaida = new JMenuItem("Saida de Produtos");
		miCadRevendedor = new JMenuItem("Cadastro de Revendedores");
		miCalculadora = new JMenuItem("Calculadora");
		miTema = new JMenuItem("Temas");
		miSair = new JMenuItem("Sair");
		
		menuControle.add(miEntrada);
		menuControle.add(miSaida);
		menuControle.add(miCadRevendedor);
		menuControle.add(miSair);
		
		menuUtilitarios.add(miCalculadora);
		menuUtilitarios.add(miTema);
		
		menuBar1.add(menuControle);
		menuBar1.add(menuRelatorios);
		menuBar1.add(menuUtilitarios);
		menuBar1.add(menuAjuda);
		
		setJMenuBar(menuBar1);
		setVisible(true);
	}
	
	public void addEventoTelaPrincipal(ActionListener pts) 
	{  
	      this.miSair.addActionListener(pts);
	      
	}
}

Codigo do controle de Eventos que esta em outra classe e em outro pacote.

package controle;

import java.awt.event.*;
import visual.TelaPrincipal;
import static javax.swing.JOptionPane.*;


public class ControlTelaPrincipal 
{
	private TelaPrincipal telaPrincipal;
	public ControlTelaPrincipal()
	{
		telaPrincipal = new TelaPrincipal();
		telaPrincipal.addEventoTelaPrincipal(new controlEventoTelaPrincipal());
	}
	
	class controlEventoTelaPrincipal implements ActionListener
	{
		public void actionPerformed(ActionEvent etc)
		{
			if (etc.getSource()== telaPrincipal.miSair)
			{
				System.exit(0);
			}
		}
	}
}

Se alguem puder me ajudar a achar o erro, eu agradeço.

1 Resposta

pgioseffi

Cara,

Seu código tá funcionando perfeitamente. A parada que você tem dois botões de “Sair”, um é um JMenuItem e um é JMenu. Vc só implementou o código para sair para o JMenuItem, não para o JMenu.

Em tempo, acho que seu JMenu não é para “Sair”, visto que o nome dele é menuAjuda e nem teria motivo para vc ter a funcionalidade de sair replicada, eu acho.

Enfim, acho q vc errou no seu teste como eu errei no início. Clicando no “Sair” errado, aquele que deveria ser, na verdade, “Sobre”.

Criado 16 de maio de 2011
Ultima resposta 16 de mai. de 2011
Respostas 1
Participantes 2