Redimensionar JPanel

6 respostas
F

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???

6 Respostas

A

posta aí o trecho do codigo

F

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;
    }
}
A

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()
ViniGodoy

É 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.

F

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.

A

sim, seria a melhor opção

Criado 29 de agosto de 2008
Ultima resposta 30 de ago. de 2008
Respostas 6
Participantes 3