Encapsulamento

3 respostas
TegE

Pessoal preciso de uma luz, talvez eu esteja muito loko… :shock:

Eu tenho essa classe…

import javax.swing.<em>;

import java.awt.</em>;

import java.awt.event.*;

public class TelaLogin extends JFrame
{

private Container tela;

Color cor = new Color(139,10,80);

private JLabel nome,senha,txt;

private JTextField cai_nome;

private JPasswordField cai_senha;

private JButton btn_ok,btn_cancela;
public  TelaLogin()

{

tela = getContentPane();
setTitle( " Login do Sistema ");

BorderLayout layout = new BorderLayout();
tela.setLayout(layout);

ImageIcon imagem = new ImageIcon("fundo.png");
JLabel rotulo = new JLabel(imagem);
	
JPanel painel = new JPanel(); 
painel.setLayout(null);
painel.add(rotulo);
setGlassPane(rotulo);
getGlassPane();
rotulo.setVisible(true);

/* Rotulos */

txt = new JLabel("");
rotulo.add(txt);
txt.setBounds(10,150,300,20);
txt.setForeground(cor);
txt.setFont(new Font("Arial",Font.BOLD,12));

nome = new JLabel("Usuário:");
rotulo.add(nome);
nome.setBounds(100,30,60,20);
senha = new JLabel(" Senha:");
rotulo.add(senha);
senha.setBounds(100,70,60,20);


/*Caixas*/
	
cai_nome = new JTextField(20);
rotulo.add(cai_nome);
cai_nome.setBounds(155,30,120,20);
cai_senha = new JPasswordField(20);
rotulo.add(cai_senha);
cai_senha.setBounds(155,70,120,20);



/*Botoes*/
			
btn_ok = new JButton("Ok ");
rotulo.add(btn_ok);
btn_ok.setBounds(95,110,90,20);
btn_ok.setMnemonic(KeyEvent.VK_O);
btn_ok.addActionListener(acaologarusuario);
btn_ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
	// + codigo
}});

btn_cancela = new JButton(" Cancelar");
rotulo.add(btn_cancela);
btn_cancela.setBounds(205,110,90,20);
btn_cancela.setMnemonic(KeyEvent.VK_C);
btn_cancela.addActionListener(acaocancelarusuario);
 public void actionPerformed(ActionEvent e){
	
                            // + codigo

}});

tela.add(painel,BorderLayout.CENTER);
	
setVisible(true);
setResizable(false);
setSize(400,200);
setLocationRelativeTo(null);

}
}

Como eu utilizaria o encapsulamento para acessar as variaveis private declaradas, ou seja pegar os dados do JTextField e inserir em um banco de dado spor exemplo…
Muito Obrigado…
Abraços!

3 Respostas

D

Crie metodos gets para pegar o conteudo dos fields, por exemplo, você poderia criar um public String getNome() que retornaria o String do JTextField que guarda o nome., foi so um exemplo mas acredito que a logica foi a mesma.
Eu tava programando e fiz da seguinte maneira, eu não tenho conhecimentos sobre padrões de projetos mas ate que saiu legal, eu crie uma clase que extend a JPanel e nela eu criei o meu formulario com o um metodo getContato() que me retornava um contando contendo todos os dados dos JTextFields do formulario, dai na minha classe que salvava os contados no banco de dados tinha o metodo guardarContato() que recebia um objeto Contato, então ficou bem facil e eu sempre poderia utilizar o meu formulario em outros JFrames caso desejasse.
Espero ter ajudado, qualquer coisa posso dar mais detalhes.

ViniGodoy

É o que o dark_creator falou.

Crie métodos getters para o seu formulário que retorne com os objetos de negócio que ele trabalha, já preenchidos e validados.
Também crie um construtor que, com base em um contato já pronto, preencha totalmente a tela.

Deixe os elementos de tela privados. Dificilmente é necessário acessar um elemento individual de fora da tela.

Procure criar uma propriedade para saber se o usuário cancelou ou confirmou a ação.

Além disso, quando for postar códigos aqui no GUJ, use a tag code, como descrita aqui:
http://www.guj.com.br/posts/list/50115.java

S

:?: :?:
Ei, você já criou um tópico pra isso :!: Por que não usou o mesmo :?:

Criado 1 de abril de 2008
Ultima resposta 2 de abr. de 2008
Respostas 3
Participantes 4