Estou desenvolvendo uma aplicação que na tela principal existe um menu e uma barra de ferramentas na parte norte da tela e no restante um JDesktopPane. Na barra de ferramentas a botões que vao abrir JPanels dentro do JDesktopPane. Entao estou adicionando os JPanel dentro do JDesktopPane utilizando BorderLayout.CENTER para ele redimensiona, mas nao está funcionando, alguem pode me ajudar???
Redimensionar JPanel
6 Respostas
posta aí o trecho do codigo
Resolvi mudar o layout manager e usar o GridBagLayout e desisti do JPanel e fui para o JInternalFrame(dentro dele o JPanel fuinciona do jeito que eu quero). Mas ainda fiquei na duvida, quando adiciono um JPanel no lugar do JInternalFrame no codigo, o resultado nao é o mesmo porque??. Outro problema que tive agora eh o seguinte, vou ficar alternando entre JInternalFrame conforme o botão que é clicado no JToolBar então usei a variavel aux(e vai te que te uma para cada JInternalFrame) para evitar que o JInternalFrame fique sendo criado varias vezes se vc ficar apertando no botão, mas o problema é que cada vez que outro botão é clicado preciso criar outro JInternalFrame e setar o valor do aux do JIF anterior e dar dispose nele, nao que seja algo complicado, mas alguma sujestão para implemetar de uma forma mais eficiente.
Outra coisas, teria como fazer o JIF ficar sem a barra de titulo ali(tipo o undecored no JFrame)??? e/ou deixar ele imovel, sem que o usuario possa mudar ele de lugar???
private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (aux) {
JInternalFrame tlc = new JInternalFrame();
jDesktopPane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.weightx = 1;
c.weighty = 1;
jDesktopPane.add(tlc, c);
tlc.setVisible(true);
aux = false;
}
}
aparentemente o erro nao está aih… quando vc troca alguma coisa em um Frame… vc deve chamar o metodo revalidate() do seu Frame pra atualizar a tela… tenta isso no final do teu metodo… ah e ali eu nao vi vc remover o outro JInternalFrame corrente… segue os passos pra vc fazer isso de forma correta:
- retirar o JInternalFrame corrente do Container seu
- adicionar o novo JInternalFrame que vc quer e dar um setVisible(true) nele
- atualizar o Container usando revalidate()
É muito difícil deixar o Internal Pane sem a barra de título. Se vc achar código que faça isso na Internet, vai ser muito sujeito a erros. Via de regra, dificilmente vale a pena uma mudança tão significativa num comportamento do Swing.
Era isso mesmo que estava faltando. Agora o JPanel aparece, vlw ae.
hmmmm, acho que vou voltar a usar o JPanel direto no JDesktopPane entao, ja que agora consegui fazer funcionar assim. Vlw.
sim, seria a melhor opção