comunicação entre objetos, como eu faço?(MVC)

1 resposta
M

Meu problema é o seguinte, não estou conseguindo passar por parametro objetos das classes, InterCadPrincipal e Modelo, para a classe Controle, tenho de passar esses objetos com todos os componentes para que eu possa usá-los em outras classes.

Tipo, a classe Controle somente recebe dados da classe Inter... e manda pra classe Modelo, só que as classes Modelo e Inter... não podem se comunicar.

Alguém pode me ajudar???

public class InterCadPrincipal extends JFrame {
    
    
	Modelo Omodelo = new Modelo();
    Controle Ocontrole = new Controle();
    
	FlowLayout Flayout;
	public JTextField jtfnome, jtfid, jtfend, jtfpreco, jtfproduto,
	jtfdata, jtfcpf, jtfemail, jtfcidade;
	
	public JLabel jlnome, jlproduto, jlpreco, jlid, jlend, jldata, 
	jltipocliente, jlcpf, jlemail, jlcidade;
	
	public JButton jbcadastrar, jbfechar, jbcomprar, jbconsulta;
	public JRadioButton rbCliente,rbFornec;
	public ButtonGroup exclusivo;//mutuamente exclusivo, serve pra marcar uma  das opções.
	public boolean tipocliente; //Atributo que distingue fornecedor de cliente.
	

	public InterCadPrincipal() {
		
        setTitle("                              Cadastro Principal");
		
		Container gerenciador = getContentPane();
		gerenciador.setLayout(null);
		
        /*Instanciando botões*/		
		jbconsulta = new JButton("Consulta");
		jbcadastrar = new JButton("Cadastrar");
		jbcomprar = new JButton("Comprar");
		jbfechar = new JButton("Fechar");
		
		/*Instanciando caixas de texto*/ 
		jtfnome = new JTextField();
		jtfend = new JTextField();
		jtfdata = new JTextField();
		jtfcpf = new JTextField();
		jtfemail = new JTextField();
		jtfcidade = new JTextField();
		jtfid = new JTextField();
		jtfproduto = new JTextField();
		jtfpreco = new JTextField();
		
		/*Instanciando labels*/
		jlnome = new JLabel("Nome ");
		jlend = new JLabel("Endereço ");
		jldata = new JLabel("Data Nascimento ");
		jltipocliente = new JLabel("tipo");
		jlcpf = new JLabel("CPF / CNPJ");
		jlemail = new JLabel("Email");
		jlcidade = new JLabel("Cidade");
		jlid = new JLabel("ID");
		jlpreco = new JLabel("Preço");
		jlproduto = new JLabel("Produto");
		
		/*Instanciando radiobuttons*/
	    rbCliente =new JRadioButton("Cliente");
	    rbFornec =new JRadioButton("Fornecedor");
	    exclusivo = new ButtonGroup();
	    
	    jlnome.setBounds(10, 10, 300, 23);
	    jlend.setBounds(10, 40, 300, 23);
	    jldata.setBounds(10, 70, 300, 23);
	    jltipocliente.setBounds(10, 100, 300, 23);
	    jlcidade.setBounds(10, 130, 300, 23);
	    jlcpf.setBounds(10, 160, 300, 23);
	    jlemail.setBounds(10, 190, 300, 23);
	    jlid.setBounds(350, 70, 50, 23);
	    jlproduto.setBounds(10, 220, 350, 23);
	    jlpreco.setBounds(10, 250, 300, 23);
	    
        /*Aqui os labels 
         * e as caixas de texto são colocados em modo invisivel*/	    
	    jlpreco.setVisible(false);
	    jlproduto.setVisible(false);
	    jtfpreco.setVisible(false);
	    jtfproduto.setVisible(false);
	    
	    jtfpreco.setBounds(150, 250, 150, 23);
	    jtfproduto.setBounds(150, 220, 300, 23);
	    jtfnome.setBounds(150, 10, 300,23);
	    jtfend.setBounds(150, 40, 300, 23);
	    jtfdata.setBounds(150, 70, 90,23);
	    jtfcidade.setBounds(150, 130, 300, 23);
	    jtfcpf.setBounds(150, 160, 300, 23);
	    jtfemail.setBounds(150, 190, 300, 23);
	    jtfid.setBounds(380, 70, 70, 23);
	    
	    rbCliente.setBounds(140, 100, 70, 23);
	    rbFornec.setBounds(240, 100, 90, 23);
	    
	    jbcadastrar.setBounds(10, 420, 100, 30);
	    jbcomprar.setBounds(120, 420, 100, 30);
	    jbconsulta.setBounds(230, 420, 100, 30);
	    jbfechar.setBounds(340, 420, 100, 30);
	    
	    gerenciador.add(jbcomprar);
	    gerenciador.add(jbconsulta);
	    gerenciador.add(jbcadastrar);
	    gerenciador.add(jbfechar);
	    
	    gerenciador.add(jlid);
	    gerenciador.add(jlnome);
	    gerenciador.add(jlend);
	    gerenciador.add(jldata);
	    gerenciador.add(jltipocliente);
	    gerenciador.add(jlcidade);
	    gerenciador.add(jlcpf);
	    gerenciador.add(jtfcpf);
	    gerenciador.add(jlemail);
	    gerenciador.add(jlpreco);
	 	gerenciador.add(jlproduto); 
	 	
	    gerenciador.add(jtfproduto);
        gerenciador.add(jtfpreco);	    
	    gerenciador.add(jtfid);
	    gerenciador.add(jtfnome);
	    gerenciador.add(jtfend);
	    gerenciador.add(jtfdata);
	    gerenciador.add(jtfcidade);
	    gerenciador.add(jtfemail);
	   
	    gerenciador.add(rbCliente);
	    gerenciador.add(rbFornec);
	    
//	    final InterCadPrincipal cad = this;
	    
	    rbFornec.addActionListener(new ActionListener()
	    {
	    	public void actionPerformed(ActionEvent e)
	    	{
	    		if(rbFornec.isSelected() == true){
	   	    	   jlpreco.setVisible(true);
	   	    	   jlproduto.setVisible(true);
	   	    	   jtfproduto.setVisible(true);
	   	    	   jtfpreco.setVisible(true);
	   	    }
	   	    
	    	}
	    });
	    
	    rbCliente.addActionListener(new ActionListener()
	    {
	    	public void actionPerformed(ActionEvent e)
	    	{
	    		if(rbCliente.isSelected() == true){
	   	    	   jlpreco.setVisible(false);
	   	    	   jlproduto.setVisible(false);
	   	    	   jtfproduto.setVisible(false);
	   	    	   jtfpreco.setVisible(false);
	   	    }
	   	    
	    	}
	    });
	    exclusivo.add(rbCliente);
	    exclusivo.add(rbFornec);
	    
	    setSize(500,500);
	    setVisible(true);
	    
	   
		
		jbcadastrar.addActionListener(new ActionListener()  //método pra sair.
		{
		  public void actionPerformed(ActionEvent e, Object objeto)
		  {
			 /*Quero fazer um procedimento aqui, e preciso passar como parametro
			  * um objeto dessa classe, como eu faço isso????*/
			  InterCadPrincipal Ocadastro = new InterCadPrincipal();
			  
			 Ocontrole.teste1(Ocadastro);/*Aqui chama um método da classe
			                             Controle*/
			  
			 
			 
		  }

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			
		}
		}//fim do metodo		
	    
		);
		
		
		jbfechar.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});
		
		jbcomprar.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
		        //new InterContas(); //método que chama outro frame, nesse caso o de compras.
		       
			}
		}
		);
		
		jbconsulta.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				new InterConsulta();
			}
		}
		);
		}//fim do construtor.
	

	public static void main(String[] args)
	{
		new InterCadPrincipal();
		
	}


//Abaixo estão os métodos modificadores e acesso.
	public void settipocliente(boolean tipocliente) {
		this.tipocliente = tipocliente;
	}
	public JTextField getJtfcidade() {
		return jtfcidade;
	}
	public void setJtfcidade(JTextField jtfcidade) {
		this.jtfcidade = jtfcidade;
	}
	public JTextField getJtfcpf() {
		return jtfcpf;
	}
	public void setJtfcpf(JTextField jtfcpf) {
		this.jtfcpf = jtfcpf;
	}
	public JTextField getJtfdata() {
		return jtfdata;
	}
	public void setJtfdata(JTextField jtfdata) {
		this.jtfdata = jtfdata;
	}
	public JTextField getJtfemail() {
		return jtfemail;
	}
	public void setJtfemail(JTextField jtfemail) {
		this.jtfemail = jtfemail;
	}
	public JTextField getJtfend() {
		return jtfend;
	}
	public void setJtfend(JTextField jtfend) {
		this.jtfend = jtfend;
	}
	public JTextField getJtfnome() {
		return jtfnome;
	}
	public void setJtfnome(JTextField jtfnome) {
		this.jtfnome = jtfnome;
	}
	public JLabel getJlid() {
		return jlid;
	}
	public void setJlid(JLabel jlid) {
		this.jlid = jlid;
	}
	public boolean istipocliente(boolean a) {
		if(rbCliente.isSelected() == true)
	    	 istipocliente(true);  
		else istipocliente(false);
		// TODO Auto-generated method stub
		return false;
	}
}//fim.
public class Modelo { public String nome; private String endereco; private int telefone; private String data; private int cpf; private String email; private int codigo; private String cidade; private boolean tipo;

InterConsulta Oconsulta = new InterConsulta();

public void teste2(InterCadPrincipal Ocadastro){
nome = Ocadastro.jtfnome.toString();

}
public Modelo() {
// TODO Auto-generated constructor stub
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

public class Controle extends InterCadPrincipal { InterCadPrincipal Ocadastro = new InterCadPrincipal(); Modelo Omodelo = new Modelo(); public void teste1(InterCadPrincipal Ocadastro){/*Já aqui, chama um método da classe Modelo*/ Omodelo.teste2(Ocadastro); }

public Controle() {
// TODO Auto-generated constructor stub

}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Controle();
}

}

1 Resposta

P

não vai fazer o que vc quer por que vc mudou a assinatura do metodo

public void actionPerformed(ActionEvent e, Object objeto)

quando ocorrer o evento do botão ele vai chamar

public void actionPerformed(ActionEvent e)

e não esse outro, é por isso que não executa seu código…

Criado 9 de novembro de 2006
Ultima resposta 9 de nov. de 2006
Respostas 1
Participantes 2