Olá. Tenho uma dúvida a respeito do CardLayout. Vejam bem. Estou desenvolvendo uma aplicação, onde dependendo do botão clicado pelo usuário, aparecem diferentes componentes numa das divisões da tela da minha aplicação (tipo frame do html). Para poder alternar entre o grupo de componentes estou utilizando o gerenciador CardLayout. O problema é que se eu ficar clicando várias vezes num só botão, aparecem todas as interfaces, pois o CardLayout se baseia no funcionamento de uma pilha e à medida que eu clico ele vai desempilhando. Como faço para resolver isso? Ou seja para ao clicar várias vezes num botão ele exiba apenas um cojunto de componentes e não fique alternando? Ou seja, existe uma maneira de acessar o que foi adicionado ao CardLayout de um modo parecido com índices como se faz em um vetor? Já procurei bastante na internet, mas não consegui encontrar nada.
Agradeço desde já pela atenção.
Já tentou desabilitar o seu botão quando clicado uma vez? E quando cliar em outro botão ele habilitar o que estava desabilitado e se tornar desabilitado? entendeu? Como se fosse assim:
BOTÃO1 | BOTÃO2 | BOTÃO3 //habilitados
clique no botão 1
BOTÃO1 | BOTÃO2 | BOTÃO3 //Botão1 desabilitado
clique no botão 2
BOTÃO1 | BOTÃO2 | BOTÃO3 //botão1 reabilitado e botão 2 desabilitado
clique no botão 3
BOTÃO1 | BOTÃO2 | BOTÃO3 //botão2 reabilitado e botão 3 desabilitado
etc…
Acontece que mesmo assim, o problema citado persiste pois o acesso a pilha em Cardlayout não é indexado, ou seja, acessando com next (da pilha de CardLayout), ocorre de um único botão fazer surgir vários componentes diferentes sendo que não era pra ser assim. Vc saberia me dizer se existe uma maneira de acessar a pilha de CardLayout como se acessa um vetor? Ou se eu abortasse a solução de Cardlayout, qual seria mais indicada?
Grato.
É… Nesse caso eu acho que vou ficar te devendo mesmo. Se eu entendi certo cada vez que você clica no mesmo botão ele adiciona os mesmo componentes adicionados anteriormente denovo? é isso? Ou um botão que era para exibir uma coisa acaba exibindo as próximas que ele não deveria?
Exatamente a última coisa que vc falou. Um botão que era pra exibir uma coisa acaba exibindo outra, pq no evento buttonhandler o seu click está associado ao next da pilha e esse next é relativo, por isso exibe coisas que não deveria. Só o first e o last que são fixos, esse é o problema. Então vc não teria outra sugestão para eu acrescentar os painéis sem usar cardlayout?
Entendi… E o BorderLayout? Já tentou? Quem sabe você pode no seu JFrame usar o Border e jogar seus botôes em um painel e colocã-lo ao NORTH e ter um painel que funcione como um container no CENTER. entendeu? imagino que funcione. Abraço.