Pontus Posted December 28, 2009 at 12:25 PM Report Share #302744 Posted December 28, 2009 at 12:25 PM 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 More sharing options...
Knitter Posted December 28, 2009 at 12:45 PM Report Share #302747 Posted December 28, 2009 at 12:45 PM 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. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Pontus Posted December 28, 2009 at 12:56 PM Author Report Share #302749 Posted December 28, 2009 at 12:56 PM 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 More sharing options...
Knitter Posted December 28, 2009 at 01:09 PM Report Share #302752 Posted December 28, 2009 at 01:09 PM 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. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Pontus Posted December 28, 2009 at 02:01 PM Author Report Share #302765 Posted December 28, 2009 at 02:01 PM 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 More sharing options...
Knitter Posted December 28, 2009 at 02:09 PM Report Share #302768 Posted December 28, 2009 at 02:09 PM 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? www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Pontus Posted December 28, 2009 at 02:46 PM Author Report Share #302780 Posted December 28, 2009 at 02:46 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now