Ir ao conteúdo

Como setar o setVisible apenas para o JFrame interno?


ProgrammerJava

Posts recomendados

Postado

Ola galera do Clube do Hardware, mais uma vez recorrendo à vocês aqui do forum! bom vamos lá a minha duvida e o seguinte:
 
Sou iniciante ao mundo da programação em java e consequentemente surgirão muitas duvidas, estou desenvolvendo um sistema de cadastros onde tenho um jFrame Principal e um jInternalFrame que e chamado dentro de uma jDesktopPane dentro desta jInternalFrame e realizado uma consulta ao banco de dados para verificar os cadastros ja existentes ate ai tudo bem so que quando preciso acessar os meus componentes do jFrame principal atraves do jInternalFrame e altera-los nao estou conseguindo.
 
 
Obs: Ja passei as variaveis dos meus componentes do jFrame principal para public, agora os componentes como por exemplo os jTextFields do jFrame principal estão visiveis no jInternalFrame so que as alteracoes so sao feitas quando muda a propriedade setVisible(true); do jFrame principal consequentemente abrindo outro jFrame principal. Ex de codigo:

FramePrincipal {   // Todo o codigo do jFramePrincipal   ...} FrameInterno {   FramePrincipal frame = new FramePrincipal();  frame.jTextField.setText("Aqui vai as minhas alteracoes");  frame.setVisible(true); // porém so funciona quando adiciono esta linha de codigo, mas abre outro jFramePrincipal }

Por favor se tiver outros metodos para estas tarefas me ajude e urgente, preciso entregar este projeto o mais rápido possivel! Desde ja agradeço pela atencao...

  • Moderador
Postado

Olá, 

 

Para abrir um JInternalFrame acho que é indispensável fazê-lo em um JDesktopPanel. Portanto se deseja abri-lo em um JFrame é preciso que este tenha um JDesktopPanel. 
Desta forma, a primeira coisa que é preciso fazer é criar e adicionar o seu JDesktopPanel no seu frame: 

JFrame frame = new JFrame("Exemplo janela");    JDesktopPane deskPanel = new JDesktopPane();    frame.add(deskPanel);  

Em seguida você cria o seu internal frame da forma que desejar e adiciona ao JDesktopPane: 

JInternalFrame internalFrame = new JInternalFrame();    //Algumas configurações gerais  internalFrame.setClosable(true);//Se o frame vai poder ser fechado pelo botão fechar   internalFrame.setIconifiable(true);//Se o frame vai poder ser minimizado.  internalFrame.setResizable(true);//Pemite editar o tamanho.    deskPanel.add(internalFrame);    //Torna o seu painel interno visível  internalFrame.setSize(100,100);  internalFrame.setVisible(true);    frame.setSize(400,400);  frame.setVisible(true);  

Bem, isso é só um exemplo. Use-o para adaptar as suas necessidades!

 

Abraço

Postado

Bom dif agradeço sua atenção mas assim eu ja tinha criado se você prestar atenção no codigo que postei é a mesma lógica que você usou no código acima... Só vai funcionar as alterações se colocar meuFrame.setVisible(true); se voce testar essa linha de código você vera que todas alterações abrira um novo frame, não e meu propósito. Pesquisando e pesquisando eu fiz da seguinte forma:

 

quando chamo minha ação no botaõ do FramePrincipalView executa as seguintes linhas de códigos:

 

 FramePrincipal() {     //Todo o código da tela principal... private void jButtonLocalizarFuncActionPerformed(java.awt.event.ActionEvent evt) { FrameJDialog localizaDados = new localizaDados(null, true) // Chama a jFrameDialog como 1º parametro null e o segundo como true que quer dizer que é modallocalizaDados.setViseble(true); // seta o metodo visivel do frameDialog para que ele apareça na tela jTextFieldNome.setText(localizaDados.setTextNome()); /** Esta linha espera o retorno do metodo setNome(); do FrameJDialog que sera executacutado logo após o                                                                                            FrameDialog ser chamado quando o actionPerformad do jButton do FramePrincipal! **/             } // Esta chave fecha o metodo do botão funcActionPerformed();}  FrameJDialog() { // Metodo setNomepublic String setNome() {                       int lineSelected = jTableFunc.getSelectedRow(); // Variavel para capturar a linha selecionada da jTable                        String nome = jTableFunc.getValueAt(lineSelected, 1).toString(); // Pega o valor da segunda coluna do jTable            return nome;} }  

 

 

Obs: funcionou beleza o unico problema é que tive que fazer um metodo desse acima mencionado para cada campo do FramePrincipal e também ainda nao consegui setar o jDateChooser e nem os jRadioButtons. Se puderem me ajudar com essas duvidas fico agradecido.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!