[Resolvido]Mudar um inicomponents privado para publico

4 respostas
Junior_Campanha

Bom dia estou criando uma aplicação com banco de dados e gostaria de saber se tem como fazer o seguinte:

tenho um jFrame onde estara o formulario para cadastro
porem quero fazer as logicas dos botoes em uma classe separada e ai nos eventos desse jframe apenas chamar a logica que esta nesta classe.

o problema é que as logicas usam comando como jtextfield.gettext(), ai quando escrevo na minha classe da erro pq nao consigo relacionar os componentes do jframe com os codigos na classe logica.

Estou usando netbeans para criar a aplicação

é possivel fazer isso no netbeans ?

vlw pela força

4 Respostas

peczenyj

bom vc esta pensando em classes e não em objetos.

objetos trocam mensagens via metodos. e metodos vc pode passar a referencia do seu jtextfield.

ou vc fez algo muito abstrato, ou esta usando talvez a abordagem errada.

por exemplo, vc pode ter uma logica assim

class Logica

metodo salvar( nome, endereco )

ai dentro do seu jFrame

no que o cara clicou no botao o que vc faz? instancia de logica . salvar ( a.getText(), b.getText(), … )

vc ganha um nivel de abstração. e vai evoluindo este modelo.

Junior_Campanha

até ai eu fiz

o que eu quero fazer é talvez um pouco diferente disto

vou postar o codigo para vc ver

public static boolean verificardados(){
        // o ! -> significa não 
        
        if(!jFTdata.getText().equals("")&& !jTFProprietario.getText().equals("")&& !jTFCNPJ.getText().equals("")&& !jTFCONDUTOR.getText().equals("")&& !jTFCPF.getText().equals("")&& !jTFMARCA.getText().equals("")&& !jTFPLACA.getText().equals("")&& !jTFCHASSI.getText().equals("")&& !jTFEQUIPAMENTO.getText().equals("")&& !jTFN_INMETRO.getText().equals("")&& !jTFCAPACIDADE.getText().equals("")&& !jTFFABRICANTE.getText().equals("")&& !jTFVOLUME1.getText().equals("")&& !jTFULT_PROD_1.getText().equals("")&& !jTFN_ONU_1.getText().equals("")&& !jTFCLASSE_RISCO_1.getText().equals("")&& !jTFTEMP_APLIC_1.getText().equals("")&& !jTFVOLUME2.getText().equals("")&& !jTFULT_PROD_2.getText().equals("")&& !jTFN_ONU_2.getText().equals("")&& !jTFCLASSE_RISCO_2.getText().equals("")&& !jTFTEMP_APLIC_2.getText().equals("")&& !jTFVOLUME3.getText().equals("")&& !jTFULT_PROD_3.getText().equals("")&& !jTFN_ONU_3.getText().equals("")&& !jTFCLASSE_RISCO_3.getText().equals("")&& !jTFTEMP_APLIC_3.getText().equals("")&& !jTFVOLUME4.getText().equals("")&& !jTFULT_PROD_4.getText().equals("")&& !jTFN_ONU_4.getText().equals("")&& !jTFCLASSE_RISCO_4.getText().equals("")&& !jTFTEMP_APLIc_4.getText().equals("")&& !jTFVOLUME5.getText().equals("")&& !jTFULT_PROD_5.getText().equals("")&& !jTFN_ONU_5.getText().equals("")&& !jTFCLASSE_RISCO_5.getText().equals("")&& !jTFTEMP_APLIC_5.getText().equals("")&& !jTFVOLUME6.getText().equals("")&& !jTFULT_PROD_6.getText().equals("")&& !jTFN_ONU_6.getText().equals("")&& !jTFCLASSE_RISCO_6.getText().equals("")&& !jTFTEMP_APLIC_6.getText().equals("")&& !jTFVOLUME7.getText().equals("")&& !jTFULT_PROD_7.getText().equals("")&& !jTFN_ONU_7.getText().equals("")&& !jTFCLASSE_RISCO_7.getText().equals("")&& !jTFTEMP_APLIC_7.getText().equals("")&& !jTFVOLUME8.getText().equals("")&& !jTFULT_PROD_8.getText().equals("")&& !jTFN_ONU_8.getText().equals("")&& !jTFCLASSE_RISCO_8.getText().equals("")&& !jTFTEMP_APLIC_8.getText().equals("")&& !jTFN_SERIE_INST_1.getText().equals("")&& !jTFN_SERIE_INST_2.getText().equals("")&& !jFTULT_CALIB_INST_1.getText().equals("")&& !jFTULT_CALIB_INST_2.getText().equals("")&& !jTFREG_TEC_APLIC1.getText().equals("")&& !jTFPROC_APLIC.getText().equals("")&& !jTFNOME_COL.getText().equals("")&& !jTFFUNCAO.getText().equals("")&& !jTFCPF_COL.getText().equals("")&& !jFTano.getText().equals("") ){
        return true;
        }else{
        JOptionPane.showMessageDialog(null, "Existem campos não preenchidos!!!");
        return false;
         
    }
    }
    public boolean verificaseleção_fin(){
       if(!jRBCAPACITACAO.isSelected() &&! jRBMANUTENCAO.isSelected() &&! jRBREFORMA.isSelected() &&! jRBVERIFC_METROL.isSelected() &&!jRBOUTROS_FIN.isShowing()){
           JOptionPane.showMessageDialog(null, "Deve ser escolhido uma finalidade da descontaminação!!!");
           return true;
        }else {
           return false;  
       }
    }
    public boolean verificaseleção_proc(){
        if(!jRBVAPOR.isSelected() &&! jRBVENTILACAO.isSelected() && !jRBEXAUSTAO.isSelected() &&! jRBAGUA.isSelected() &&! jRBOUTROS.isSelected()){
            JOptionPane.showMessageDialog(null, "Deve ser escolhido um processo de descontaminação!!!");
            return true;
        }else{
            return false;
        }
    }    
    public boolean habilitaoutros_fin(){
        if(jRBOUTROS_FIN.isSelected()){
           jTFOUTROS_DESCRICAO.setEnabled(true);
           return true;
       }else {
           jTFOUTROS_DESCRICAO.setEnabled(false);
           return false;
       }
    }

esse aki é alguns codigos que estao no meu jframe, são logicas que mexem diretamente com os componentes do meu jframe. eu queria colocar esses codigos em uma classe separada mas ai ele nao reconhece os jtextefields, nem botoes. ja tornei todos eles publicos porem nao consigo referencia-los

nao sei se consegui explicar dereito agora

as classes de acesso ao banco de dados e de get and setter dos valores ja estao prontas e funcionando.

o problema é referenciar os textfield e botoes em uma classe separada

peczenyj

mais ou menos.

vc tem uma “tela”, certo? uma parte dessa tela tem botoes. vc tem labels, tem textfields, etc.

uma parte dessa tela pode ser um objeto Formulario.

o objeto Formulario contem os labels, jtextfields, etc. e ele sabe que quando apertar o botão “enviar” ele vai fazer uma sequencia de eventos.

ele pode validar alguns campos ( obrigatorios, formato, etc )

se esta valido, ele cria e envia uma mensagem a outro objeto, que tem a logica de fazer algo com isso.

por exemplo, é uma busca. a busca não pode ser vazia. vc tem um botão buscar e um textfield com o termo e um componente onde vc vai escrever as paradas.

no enviar vc usa um objeto que sabe buscar o termo. esse objeto nao sabe nada sobre swing. ele retorna um List<Resultado>

é o seu ‘componente visual’ que sabe pegar esse list e adicionar na tela. pode ser um grid, pode ser uma tabela, etc.

separar a logica da implementação é isso. note que ai vc tem camadas diferentes.

se vc passa um jtextfield para este objeto ‘buscador’ ele vira parte da sua camada de visão (view). vc acoplou as coisas.

isso é bom? so vc pode dizer. codigo desacoplado exige mais testes de integração.

Junior_Campanha

entendi mais ou menos o que você quis dizer

Sou iniciante em Java ainda então estou apanhando bastante :smile:

Mas vlw pela ajuda

vou deixar no basico mesmo, para fazer isso pelo que vejo requer um grau de conhecimento que eu ainda não possuo, quem sabe mais a frente …

vlw

Criado 3 de novembro de 2016
Ultima resposta 3 de nov. de 2016
Respostas 4
Participantes 2