Padrão MVC, como ele se comunica?

7 respostas
M
package View;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class CadPrincipal extends JFrame {	
	FlowLayout Flayout;
	JTextField jtfnome, jtfend, jtfdata, jtfcpf, jtfemail, jtfcidade;
	JLabel jlnome, jlend, jldata, jltipo, jlcpf, jlemail, jlcidade;
	JButton jbbotao1;
	JRadioButton rbCliente,rbFornec;
	ButtonGroup exclusivo;//mutuamente exclusivo
	
	public CadPrincipal() {
		super("Cadastro Principal");
		Container gerenciador = getContentPane();
		gerenciador.setLayout(null);
		
		jbbotao1 = new JButton("Ok!");
		jtfnome = new JTextField();
		jtfend = new JTextField();
		jtfdata = new JTextField();
		jtfcpf = new JTextField();
		jtfemail = new JTextField();
		jtfcidade = new JTextField();
		
		jlnome = new JLabel("Nome ");
		jlend = new JLabel("Endereço ");
		jldata = new JLabel("Data Nascimento ");
		jltipo = new JLabel("Tipo");
		jlcpf = new JLabel("CPF / CNPJ");
		jlemail = new JLabel("Email");
		jlcidade = new JLabel("Cidade");
		
	    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);
	    jltipo.setBounds(10, 100, 300, 23);
	    jlcidade.setBounds(10, 130, 300, 23);
	    jlcpf.setBounds(10, 160, 300, 23);
	    jlemail.setBounds(10, 190, 300, 23);
	    
	    jtfnome.setBounds(150, 10, 300,23);
	    jtfend.setBounds(150, 40, 300, 23);
	    jtfdata.setBounds(150, 70, 300,23);
	    jtfcidade.setBounds(150, 130, 300, 23);
	    jtfcpf.setBounds(150, 160, 300, 23);
	    jtfemail.setBounds(150, 190, 300, 23);
	    
	    
	    rbCliente.setBounds(140, 100, 70, 23);
	    rbFornec.setBounds(240, 100, 90, 23);
	    jbbotao1.setBounds(10, 420, 100, 30);
	    
	    gerenciador.add(jlnome);
	    gerenciador.add(jlend);
	    gerenciador.add(jldata);
	    gerenciador.add(jltipo);
	    gerenciador.add(jtfnome);
	    gerenciador.add(jtfend);
	    gerenciador.add(jtfdata);
	    gerenciador.add(jbbotao1);
	    gerenciador.add(jtfcidade);
	    gerenciador.add(rbCliente);
	    gerenciador.add(rbFornec);
	    gerenciador.add(jlcidade);
	    gerenciador.add(jlcpf);
	    gerenciador.add(jtfcpf);
	    gerenciador.add(jlemail);
	    gerenciador.add(jtfemail);
	    
	    exclusivo.add(rbCliente);
	    exclusivo.add(rbFornec);
	    
	    setSize(500,500);
	    setVisible(true);		
		
		jbbotao1.addActionListener(new ActionListener()  //método pra sair.
		   {
			  public void actionPerformed(ActionEvent e)
			  {
				if(rbCliente.isSelected() == true)
					JOptionPane.showMessageDialog(null,"cliente selecionado");
				System.exit(0);
		      }//fim do metodo		
	       }
		);
	}//fim do construtor.
	
	

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


Queria fazer com que essas duas classes se comunicassem por meio de métodos modificadores como eu faço??? Quero fazer a classe CadastroCli receber dados da classe CadPrincipal
package Control;

import View.CadPrincipal;

import javax.swing.JOptionPane;
public class CadastroCli {

private String nome;

private String endereco;

private int telefone;

private int data;

private int cpf;

private String email;

private int codigo;

private String cidade;
CadPrincipal Cadastro = new CadPrincipal();


public String getCidade() {
	return cidade;
}


public void setCidade(String cidade) {
	this.cidade = ************** <--------- o que eu coloco aqui???
}


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


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

}

}

7 Respostas

C

cidade :joia:

M

Amigo, se eu colocar o atributo cidade eu não vou estar pegando o dado que for digitado na interface gráfica, eu quero saber é como faço pra pegar o dado digitado num JTextField

J

Eu acho que está havendo uma confusão, é cidade sim, mas quando tu quiser pegar o valor de textField de cidade, tu faz assim:

CadastroCli cadastro = new CadastroCli();

cadastro.setCidade( textField.getText());

Entendeu?

M

Amigo jhonatan, entendi sua idéia, mas isso não funicona no meu código que postei acima, vc pode por favor testar e me dizer pq não funciona??

J

Tu queres pegar o valor dos textField através do controller?
Se é isso, cria na tua view os métodos get dos campos textField!!
Tipo assim:

public JTextField txtCidade() { return this.txtCidade; }

Dae cria os textField globalmente!!!

No teu controller tu pega os dados assim:

CadPrincipal cad = new CadPrincipal(); this.setCidade( cad.txtCidade().getText());

Acho que é mais ou menos assim!!

C

Strings str = seuJtextField.getText();

M
Cassolato, deu certo agora to com outro problema

[/code]

public class Controle (	

InterCadPrincipal Cadastro = new InterCadPrincipal();

InterContas Contas = new InterContas();

Modelo Mode = new Modelo();
/*jtfcidade é um componente JTextField*/
String a = Cadastro.jtfcidade.getText();
public Controle() {
	// TODO Auto-generated constructor stub	
}
public static void main(String[] args) {
	// TODO Auto-generated method stub
	new Controle();

/*O erro da aqui nessa linha */
JOptionPane.showMessageDialog(null,"teste = " + a);

}

}

Criado 31 de outubro de 2006
Ultima resposta 2 de nov. de 2006
Respostas 7
Participantes 3