Jump to content

Chamar um Jpanel que já foi criado


Pontus
 Share

Recommended Posts

Boas

O meu problema é o seguinte: tenho uma Jframe que tem 2 botoes. Um procura um ficheiro, e o outro visualiza o conteudo do ficheiro.

Ora bem, a questão é que quando tento visualizar o conteudo do ficheiro num JPanel, ele não está a aparecer. Esse Jpanel já tinha sido usado para criar o ficheiro. Este Jpanel contem 2 jTextField1 e uma jComboBox1, nada mais. O que eu pretendo é que quando abro o ficheiro, os dados sejam apresentados nos respectivos componentes.

Estou a fazer assim:

private void visualizarActionPerformed(java.awt.event.ActionEvent evt) 
{
    panel_x novo_painel= new panel_x(dados);

}

do outro lado:

public panel_x(Dados d) {
        initComponents();
        this.setVisible(true);
        //..... aqui trato os dados, ou seja atribuo aos componentes os dados
}

alguma ideia do que estarei a fazer errado?

Obrigado

Link to comment
Share on other sites

A primeira pergunta seria: estás a adicionar o painel ao componente de topo que estás a usar? Suponho que estejas a usar uma JFrame, estás a adicionar o novo painel a essa JFrame?

Se estás a modificar componentes visuais durante a execução da aplicação, é conveniente invocares o validate() da frame.

Link to comment
Share on other sites

Bem, não sei se responde mas isto é uma aplicação que tem como base uma SingleFrameApplication onde está contido um menu.

Através desse menu, faço a criação e leitura dos ficheiros. Quando faço por exemplo criar, no menu é criado um Jpanel onde introduzo os dados que quero gravar no ficheiro.

Quando faço abrir, crio uma Jframe para procurar o ficheiro que quero abrir, e só depois de clicar no botao é que ponho o Jpanel visivel, com os dados nos componentes. Neste caso o root seria sempre a SingleFrameApplication certo?

Link to comment
Share on other sites

Em princípio sim, mas em princípio só existe uma única JFrame por aplicação, se existir mais que uma estás a tornar a aplicação pesada desnecessáriamente. Se pretendes abrir ficheiros usas o JFileChooser que é um componente próprio para isso e não precisa estar dentro de qualquer outro componente.

A minha sugestão será colocares um break point na linha de código onde colocas o painel visível e executares um debug para verificar se essa linha está a ser chamada e o que se passa em torno dela.

Deixo também uma recomendação, se não tens conhecimentos de Swing, primeiro usa os componentes base para aprender e só depois tentar usar essa framework. A Swing Application Framework é útil mas esconde muito do que é a base de aplicações gráficas usando Swing, é óptimo para quem domina a criação de aplicações gráficas, é menos bom para quem se sente pouco à vontade com Swing.

Link to comment
Share on other sites

Por tópicos:

Só uso as Jframes para chamar "janelas" de login e de localização de ficheiros (indicar o file path).

Para abrir os ficheiros eu estou a usar o jFileChooser.

Já fiz debug e a linha está a ser chamada, e não me envia qualquer erro para o log que criei  😕

Quanto aos conhecimentos de Swing de facto não são muitos, mas como estou a usar o NetBeans, o sacaninha é que criou Swing Application Framework mal criei o projecto.

Link to comment
Share on other sites

JFrame é um componente de topo, a sua iniciação é pesada, a sua gestão também. Só deve existir uma JFrame por aplicação, até em aplicações MDI é mais eficiente usar apenas uma JFrame. Todas as restantes janelas são criadas através de JDialog, que podem ser definidas como "modal" ou não, dependendo do objectivo.

Portanto, "só" usar JFrames para chamar janelas é mau, até porque essas janelas serão tão simples que deviam mesmo ser JDialogs.

O Netbeans IDE criou essa aplicação porque tu escolheste esse tipo de framework. Uma "Desktop Application", como diz na descrição, é uma aplicação que usa SAF. A aplicação normal, é apenas "Java Application".

Se estás ainda a começar com o projecto talvez fosse uma boa ideia passares tudo para uma aplicação normal e evitar usar a SAF.

É normal que não te dê erros, mas é complicado estar a tentar adivinhar o que se está a passar, dá para colocares o código relevante aqui ou até o projecto?

Link to comment
Share on other sites

Bem a questão é que isto é um protótipo que tem de estar pronto até dia 30 😕

Já resolvi a situação, mas com truques que não curto muito fazer... Tipo usar o static.....

Quanto à dica das jDialogs que me deste, vou usá-la. Vou passar as 2 jFrames que tenho para jDialogs e em relação a passar isto para Java Application, bem penso que será o passo seguinte. Acima de tudo tenho é de por o protótipo a funcionar até dia 30, depois antes de arrancar o desenvolvimento desta nova aplicação vou passar para Java Application...

Bem e já agora obrigado pela paciência  🙂

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.