[Duvida] Referente a ActionListener

4 respostas
T

Boa tarde, pessoal tenho a seguinte duvida.
Criei 2 clases no java, criaria uma barra de menus e seria herdada por todas as outras classes, entretanto ao herdar a classe ‘menus’ se essa nova classe tiver também um botao a ser implementado ou esse botao funciona e desabilita os botoes do menu ou o do menu funciona e o botao naum.

Gostaria de saber se tem uma solução pra isso.

Desde ja agradeço.

4 Respostas

AndreSorge

Boa Noite tarlix

Não entendi muito bem a sua duvida…

Voce tem uma classe que contem um MENU, que voce quer que seja herdado pelas classes filhos, mas ao realizar o extends o(s) botoes da classe filho estão desabilitado, ou o inverso?

é isso?

Voce poderia postar o codigo?

T

é +- isso
não é que o botao fica desabilitado, é que a ação dele nao funciona eu teria que implementar denovo.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class principal extends JFrame implements ActionListener
{
	// Logout // login - sair
	//exibir - Consultar - 
	// Editar - Cadastrar - Deletar 
	// Sobre 

	static JButton vei;
	static JButton limpar;
	private JMenu  mnuarquivo, mnuajuda, mnueditar, mnuexibir;
	private JMenuItem opclogout, opcsair,opcconsultar, cadmulta, cadapessoa, deletar;
	private JMenuItem  opcsobre;
	
	  public principal()
	{
		
		setTitle("Sistema Gerenciador de Transido de São Paulo");
		setSize(700,500);
		setLayout(null);
		setResizable(false);
		setLocationRelativeTo(null);
		
		opclogout = new JMenuItem("Logout");
		
		opclogout.addActionListener(this);
		
		opcsair = new JMenuItem("Sair");
		
		opcsair.addActionListener(this);
		
		opcconsultar = new JMenuItem("Consultar");
	
		mnuarquivo = new JMenu("Arquivo");
		
		mnuarquivo.add(opclogout);
		mnuarquivo.add(opcsair);
		
		//Agora é a segunda parte, 
		//exibir - Consultar - 
		
		opcconsultar = new JMenuItem("Consultar");
		opcconsultar.addActionListener(this);
		mnueditar = new JMenu("Exibir");
		
		mnueditar.add(opcconsultar);
		////
		///
		// Editar - Cadastrar - Deletar 
		
		
		
		cadapessoa = new JMenuItem("Cadastrar Pessoa");		
		cadapessoa.addActionListener(this);
		
		cadmulta = new JMenuItem("Cadastrar Multa");
		cadmulta.addActionListener(this);
		//this.cadastrar = cadastrar;
		
		
		deletar = new JMenuItem("Deletar");
		mnuexibir = new JMenu("Editar");
		mnuexibir.add(cadapessoa);
		mnuexibir.add(cadmulta);
		mnuexibir.add(deletar);
		//
		//
		//
		
		opcsobre = new JMenuItem("Sobre o sistema");
		opcsobre.addActionListener(this);
		mnuajuda = new JMenu("Ajuda");

		mnuajuda.add(opcsobre);
		
		JMenuBar mbarMenu = new JMenuBar();
		mbarMenu.add (mnuarquivo);
		mbarMenu.add(mnueditar);
		mbarMenu.add(mnuexibir);
		mbarMenu.add(mnuajuda);

		
		setJMenuBar(mbarMenu);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		setVisible(true);
		
	}
	 public static void main(String args[])
		
		{	
			JFrame.setDefaultLookAndFeelDecorated(true);
			new principal();
		}
	

	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource()== opcconsultar)
		{
			new consultar();
			setVisible(false);
			
		}
		if(e.getSource() == opcsair)
		{
			System.exit(0);
			
		}
		if(e.getSource() == opclogout )
		{
			new Interfaces();
			
			setVisible(false);
			
		}
		if(e.getSource() == cadapessoa)
		{
			new gravar();
			
			setVisible(false);
		}
		if(e.getSource() == opcsobre)
		{
			new Sobre();
			
			
		}
		if(e.getSource() == vei)
		{
			new consultar2();
			setVisible(false);
		}
		if(e.getSource() == limpar)
		{
			new consultar();
			setVisible(false);
		}	
		
	}

}

acima tá a classe principal que será o pai e as outras classes vao herdar o menu e suas respectivas ações.

__

entretanto, se eu criar outra classe que irá herdar a principal e eu colocar IMPLEMENTS ACTION LISTENER as ações que foram herdadas nao funcionam, aparece o menu bonitinho tudo certinho mas nao funciona a ação. e começa a funcionar só a nova ação que eu criei nessa nova classe.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
public class consultar2 extends principal implements ActionListener{

	
	
	
	JLabel veiculo, marca, modelo, ano, cor, renavan, chassi, categoria,placa;
	JPanel p1,p2,p3,p4;
	TextField marcatexto,modelotexto,  cortexto, anotexto, renavantexto, chassitexto, categoriatexto;
	JComboBox carro;
	 String a;
	 TextField placatexto;
		JScrollPane SP;
	 JButton finalizar, voltar;
	 
	 TextField tipobox;
	 JLabel valor, pontos , multa, data, horario, local, tipo, descricao;
	 TextField valortexto, pontostexto, datatexto, horariotexto, localtexto;
	 JTextArea desc, Ta;
	public consultar2(){
	
		setTitle("Sistema Gerenciador de Transido de São Paulo ");
		setSize(800,600);
		setLayout(null);
		setResizable(false);
		setLocationRelativeTo(null);
		
		Container tela = getContentPane();
		
		
		
		
		veiculo = new JLabel("Veículo");
		veiculo.setLocation(5,5);
		veiculo.setSize(100,15);
		
		carro = new JComboBox();
		carro.setLocation(80,05);
		carro.setSize(120,20);
		
		//
		
		marca = new JLabel("Marca");
		marca.setLocation(5,40);
		marca.setSize(80,15);
		
		
		marcatexto = new TextField();
		marcatexto.setLocation(80,40);
		marcatexto.setSize(220,20);
		
		//
		
		modelo = new JLabel("Modelo");
		modelo.setLocation(340,40);
		modelo.setSize(80,15);
		
		modelotexto = new TextField();
		modelotexto.setLocation(420,40);
		modelotexto.setSize(220,20);
		
		//
		//
		
		placa = new JLabel("Placa");
		placa.setLocation(5,75);
		placa.setSize(80,15);
		
		placatexto = new TextField();
		placatexto.setLocation(80,75);
		placatexto.setSize(150,20);
		
		//
		//
		
		cor = new JLabel("Cor");
		cor.setLocation(260,75);
		cor.setSize(80,15);
		
		cortexto = new TextField();
		cortexto.setLocation(320,75);
		cortexto.setSize(150,20);
		
		//
		//
		
		
		
		ano = new JLabel("Ano de fabricação");
		ano.setLocation(5,110);
		ano.setSize(115,15);
		
		anotexto = new TextField();
		anotexto.setLocation(120,110);
		anotexto.setSize(150,20);
		
		//
		//
		renavan = new JLabel("Renavan");
		renavan.setLocation(300,110);
		renavan.setSize(80,15);
		
		renavantexto = new TextField();
		renavantexto.setLocation(380,110);
		renavantexto.setSize(150,20);
		
		
		
		//
		//
		//
		chassi = new JLabel("Chassi");
		chassi.setLocation(5,145);
		chassi.setSize(60,15);
		
		chassitexto = new TextField();
		chassitexto.setLocation(80,145);
		chassitexto.setSize(150,20);
		//
		//
		
		categoria = new JLabel("Categoria");
		categoria.setLocation(250,145);
		categoria.setSize(80,15);
		
		categoriatexto = new TextField();
		categoriatexto.setLocation(330,145);
		categoriatexto.setSize(150,20);
		
		
		//
		//
		///		
		
		p1 = new JPanel();
		p1.setLayout(null);
		p1.setBounds(00,00,790,175);
		p1.setBackground(Color.WHITE);
		p1.setBorder(BorderFactory.createBevelBorder(1,Color.gray,Color.gray));
		
		
		
		
		//aki termina o 1 painel
		//
		//
		//
		
		
		
		
		
		
		p2 = new JPanel();
		p2.setLayout(null);
		p2.setBounds(00,172,790,150);
		p2.setBackground(Color.WHITE);
		p2.setBorder(BorderFactory.createBevelBorder(1,Color.gray,Color.gray));
		
		
		
		
		
		
		multa = new JLabel("MULTAS");
		multa.setLocation(350,05);
		multa.setSize(80,15);
		
		//
		valor = new JLabel("Valor");
		valor.setLocation(05,35);
		valor.setSize(80,15);
		
		valortexto = new TextField();
		valortexto.setLocation(50,35);
		valortexto.setSize(150,20);
		
		//
		//
		pontos = new JLabel("Pontos");
		pontos.setLocation(235,35);
		pontos.setSize(80,15);
		
		pontostexto = new TextField();
		pontostexto.setLocation(300,35);
		pontostexto.setSize(150,20);
		//
		//
		tipo = new JLabel("Tipo");
		tipo.setLocation(480,35);
		tipo.setSize(80,15);
		
		
		tipobox = new TextField();
		tipobox.setLocation(520,35);
		tipobox.setSize(150,20);
		//
		//
		data = new JLabel("Data");
		data.setLocation(05,70);
		data.setSize(80,15);		
		
		datatexto = new TextField();
		datatexto.setLocation(50,70);
		datatexto.setSize(150,20);
		//
		//
		horario = new JLabel("Horario");
		horario.setLocation(235,70);
		horario.setSize(80,15);
		
		horariotexto = new TextField();
		horariotexto.setLocation(300,70);
		horariotexto.setSize(150,20);
		//
		//
		local = new JLabel("Local");
		local.setLocation(05,105);
		local.setSize(80,15);
		
		localtexto = new TextField();
		localtexto.setLocation(50,105);
		localtexto.setSize(700,20);
		
		
		
		
		
		descricao = new JLabel("Descrição");
		descricao.setLocation(350,130);
		descricao.setSize(100,15);
		//
		//aki termina o  2 painel
		
		
		/*
		p3 = new JPanel();
		p3.setLayout(new BorderLayout());
		p3.setBounds(00,319,790,250);
		p3.setBackground(Color.WHITE);
		//p3.setBorder(BorderFactory.createBevelBorder(1,Color.white,Color.white));
		
		
		//
		//
		
	

	 desc = new JTextArea();
	 desc.setLocation(120,30);
	 desc.setSize(610,150);
	desc.setBackground(Color.gray);
		
	teste = new JScrollPane(desc);
	teste.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
	teste.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		
		*/
	
		
		desc = new JTextArea();
		desc.setBorder(BorderFactory.createLoweredBevelBorder());
		desc.setEditable(false);
		desc.setLineWrap(true);
	
		
		
		SP = new JScrollPane(desc);
		SP.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		SP.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		
		p3 = new JPanel();
		p3.setLocation(-1,320);
		p3.setSize(792,170);
		p3.setLayout(new BorderLayout());
		p3.add(SP);
	
	
	
	
	
	

		
		
		p4 = new JPanel();
		p4.setLayout(null);
		p4.setLocation(00,495);
		p4.setSize(790,50);
		p4.setBackground(Color.white);
		//p3.setBorder(BorderFactory.createBevelBorder(1,Color.white,Color.white));
		
		
		
		JButton voltar = new JButton("Voltar");
		voltar.setLocation(250,10);
		voltar.setSize(100,20);		
		voltar.addActionListener(this);
		this.voltar = voltar;
		
		
		finalizar = new JButton("Finalizar");
		finalizar.setLocation(400,10);
		finalizar.setSize(100,20);		
		finalizar.addActionListener(this);
		this.finalizar = finalizar;
		
		
		
		
		
		p4.add(voltar);
		p4.add(finalizar);
		p3.add(SP);
		p2.add(descricao);
		p2.add(localtexto);
		p2.add(local);
		p2.add(horariotexto);
		p2.add(horario);
		p2.add(datatexto);
		p2.add(data);
		p2.add(tipobox);
		p2.add(tipo);
		p2.add(pontostexto);
		p2.add(pontos);
		p2.add(valortexto);
		p2.add(multa);
		p2.add(valor);
		p1.add(categoriatexto);
		p1.add(categoria);
		p1.add(chassi);
		p1.add(chassitexto);
		p1.add(renavantexto);
		p1.add(renavan);
		p1.add(ano);
		p1.add(anotexto);
		p1.add(cortexto);
		p1.add(cor);
		p1.add(placatexto);
		p1.add(placa);
		p1.add(modelotexto);
		p1.add(modelo);
		p1.add(carro);
		p1.add(marcatexto);
		p1.add(marca);
		p1.add(veiculo);
		tela.add(p1);
		tela.add(p2);
		tela.add(p3);
		tela.add(p4);
		
		JFrame.setDefaultLookAndFeelDecorated(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
		
	
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == finalizar)
		{
			
			new principal();
			setVisible(false);
			
			
			
		}
		
		if(e.getSource() == voltar)
		{ 
			new consultar();
			
			setVisible(false);
		}
	}	
	
	
	
}

Logo, minha duvida é a seguinte, eu não consigo herdar uma classe e sua respectiva ação e criar mais ações nessa nova classe sem perder as anteriores?

___

ou seja, ou isso funciona \/

public void actionPerformed(ActionEvent e) {
		
		if(e.getSource()== opcconsultar)
		{
			new consultar();
			setVisible(false);
			
		}
		if(e.getSource() == opcsair)
		{
			System.exit(0);
			
		}
		if(e.getSource() == opclogout )
		{
			new Interfaces();
			
			setVisible(false);
			
		}
		if(e.getSource() == cadapessoa)
		{
			new gravar();
			
			setVisible(false);
		}
		if(e.getSource() == opcsobre)
		{
			new Sobre();
			
			
		}
		if(e.getSource() == vei)
		{
			new consultar2();
			setVisible(false);
		}
		if(e.getSource() == limpar)
		{
			new consultar();
			setVisible(false);
		}	
		
	}

}

ou isso.

public void actionPerformed(ActionEvent e) {
		if(e.getSource() == finalizar)
		{
			
			new principal();
			setVisible(false);
			
			
			
		}
		
		if(e.getSource() == voltar)
		{ 
			new consultar();
			
			setVisible(false);
		}
	}	
	
	
	
}

minha duvida eh se posso fazer os 2 funcionar sem ter que criar em cada classe todas as ações do menu novamente.

T

Alguem pode me ajudar? :stuck_out_tongue:

T

Desculpe-me se naum puder dar up
mas será que alguem pode me ajudar em relação a isso?
ainda nao consegui resolver o problema.

herdei a classe PRINCIPAL mas as ações do actionlistener somem qdo eu criou um novo actionlistener nessa classe que esta herdando a principal.

Criado 26 de outubro de 2010
Ultima resposta 29 de nov. de 2010
Respostas 4
Participantes 2