Repetição de Set's e Get's que fazem a mesma coisa em uma classe [ NÃO RESOLVIDO ]

9 respostas
D

Olá pessoal!!
Tudo certo??

É o seguinte estou fazendo uma interface em que tenho JTabbedPane, onde:
:arrow:1ª Aba é: Adicionar Exame
:arrow:2ª Aba é: Atualizar/Consultar Exame

Supondo que em ambos eu tenho JTextField chamado jtfNome, mas como não podem ter o mesmo nome de variável, tive que colocar em um jtfNome e no outro jtfNome1.

[size=18][color=red]O problema é que eu tenho que fazer dois métodos set’s, onde a única coisa que muda é o nome da variável (jtfNome e jtfNome1) [/color][/size]como mostro abaixo:

public void setDadosExameAdicionar(){ exame.setNome(jtfNome.getText()); }

public void setDadosExameAtualizar(){ exame.setNome(jtfNome1.getText()); }

O problema é que tenho muito mais JTField’s na minha inteface. Gostaria de saber se há como [color=red]resolver isso de alguma forma em que eu não precise fazer dois métodos set’s, pois não tem muita lógica eu colocar dois métodos que fazem a mesma coisa só pq eu tenho o nome da variável diferente.[/color]
Muito obrigada!!

9 Respostas

GabrielCardelli
public void setDadosExame(String nome){  
      exame.setNome(nome);  
}  

setDadosExame(jtfNome.getText());
setDadosExame(jtfNome1.getText());

Não sei se entendi direito, não poderia ser deste modo?

Abraço.

Thiago_MuiLoko

também seguindo a mesma linha de raciocinio....

setText("Texto");

public void setText(String txt){
jTextField1.setText(txt);
jTextField2.setText(txt);
}

Espero ter ajudado...

FacaNaCaveira

Fala ai Dina blz?

seria algo desse tipo?? só não testei mas é provavel que de certo, vc criar um metodo generico para poder ler todos os seus textFields

public void setDadosExameAdicionarAtualizar(javax.swing.JTextField campo){
      exame.setNome(campo.getText());
}

Abração 8)
Max

D

Obrigada pelas respostas!!! Mas não é bem isso que eu gostaria…

A questão é que eu tenho várias JTextField’s, e caso clique no botão cadastrar (que está na 1ª aba), tem que fazer o [color=blue]get de todos os JTextField’s com nomes de variáveis que não terminam com 1[/color]. Ex.: (jtfNome, jtfInfoAdicionais, jtfData…)
E caso clique no botão atualizar (que está na 2ª aba), tem que fazer o [color=blue]get de todos os JTextField’s com nomes de variáveis que terminam com 1[/color]. Ex.: (jtfNome1, jtfInfoAdicionais1, jtfData1…).

O que eu queria fazer é algo assim:

boolean cadastrar; //Botão cadastrar private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) { //codigo cadastrar = true; } //Botão Atualizar private void btnAtualizarActionPerformed(java.awt.event.ActionEvent evt) { //codigo cadastrar = false; } //setDados public void setDados(){ String sufixo; if(cadastrar==true){ sufixo = ""; //não tem 1 no final do nome das variáveis } else{ sufixo = "1"; //tem 1 no final do nome das variáveis } // exame.setNome(jtfNome+sufixo.getText()); exame.setInfoAdicionais(jtfInfoAdicionais+sufixo.getText()); }
[color=red]
Nas linhas 22 e 23, é para demonstrar o que eu quero fazer. Caso o sufixo seja “”, então o nome da variável não terá 1 no final, e caso contrário terá no final do nome de cada variável 1.
[/color]

Isso seria possível de alguma forma?

Hebert_Coelho

Uai, eu não saco muito de Swing não, mas vc não poderia colocar em um array?

jtfNome[0],jtfNome[1] e tals?

Como vc mostrou no seu exemplo que vc tem um sufixo imagino que com um array iria tudo bem para vc.

laudenpower

Por acaso tu estais usando dois campos para o mesmo dado em modos de operação diferente (tipo se tiver em modo de inserção tu pega os dados do jtextfield se tiver em modo de alteração tu pega os dados do jtextfield1) ? Se for tem algo bem esquisito no teu processo.

Corr.
Pude notar que é isso mesmo, nesse caso use a mesma tela em momentos diferentes use uma variável booleana que indica quando se está alterando ou inserindo onde se estiver inserindo mostre os campos sem texto algum se tiver alterando os campos são preenchidos com os dados vindos do BD.

D

Sim é isso mesmo.

O motivo é o seguinte, eu estou fazendo utilizando JTabbedPane, aquelas abinhas, sabe??

Na primeira aba contém os dados para Cadastrar.
Na segunda aba contém os dados para Alterar.

Portanto tive que criar duas telas bem parecidas, quase idênticas, a única coisa que muda são os botões e um JComboBox no Alterar onde é selecionado o código do dado que se deseja alterar.

Sendo que eu tenho, por exemplo 2 JTextField Nome, um no cadastrar e um no alterar, e não podem ter o mesmo nome pois estão na mesma classe, eu fui obrigada a nomear um de jtfNome e o outro de jtfNome1.

Deu pra entender o motivo de ter feito isso??
Vc teria alguma solução pro meu problema?
Grata!!

Felagund

dina:
Obrigada pelas respostas!!! Mas não é bem isso que eu gostaria…

A questão é que eu tenho várias JTextField’s, e caso clique no botão cadastrar (que está na 1ª aba), tem que fazer o [color=blue]get de todos os JTextField’s com nomes de variáveis que não terminam com 1[/color]. Ex.: (jtfNome, jtfInfoAdicionais, jtfData…)
E caso clique no botão atualizar (que está na 2ª aba), tem que fazer o [color=blue]get de todos os JTextField’s com nomes de variáveis que terminam com 1[/color]. Ex.: (jtfNome1, jtfInfoAdicionais1, jtfData1…).

O que eu queria fazer é algo assim:

boolean cadastrar; //Botão cadastrar private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) { //codigo cadastrar = true; } //Botão Atualizar private void btnAtualizarActionPerformed(java.awt.event.ActionEvent evt) { //codigo cadastrar = false; } //setDados public void setDados(){ String sufixo; if(cadastrar==true){ sufixo = ""; //não tem 1 no final do nome das variáveis } else{ sufixo = "1"; //tem 1 no final do nome das variáveis } // exame.setNome(jtfNome+sufixo.getText()); exame.setInfoAdicionais(jtfInfoAdicionais+sufixo.getText()); }
[color=red]
Nas linhas 22 e 23, é para demonstrar o que eu quero fazer. Caso o sufixo seja “”, então o nome da variável não terá 1 no final, e caso contrário terá no final do nome de cada variável 1.
[/color]

Isso seria possível de alguma forma?

Dina,

vc pode armazenar em um array como foi dito, ou usar reflection…

por exemplo

public void setDados(){
                String sufixo;
                if(cadastrar==true){
                      sufixo = ""; //não tem 1 no final do nome das variáveis
                }
                else{
                      sufixo = "1"; //tem 1 no final do nome das variáveis
                }
                //
                Field f = getClass().getDeclaredField(jtfNome+sufixo.getText());
                f.setAccessible(true);
                exame.setNome(f.get(this));
                Field f1 = getClass().getDeclaredField(jtfInfoAdicionais+sufixo.getText());
                f1.setAccessible(true);
                exame.setInfoAdicionais(f1.get(this));
          }

Talvez seria mais interessante a ideia do array. Mas desse modo só estão sem as exceptions…

D

Rafael, obrigada, tentarei fazer como falou…!
Obrigada:-)

Criado 6 de agosto de 2010
Ultima resposta 6 de ago. de 2010
Respostas 9
Participantes 7