O componente Botão de opção, também conhecido como RadioButton, é utilizado para você selecionar uma e somente uma opção entre várias oferecidas em um determinado grupo, ou seja, um grupo desses botões não permite mais de uma seleção por vez. Esse componente deverá ser utilizado em situações nas quais existam pelo menos duas opções de escolha. Você deve ter observado o uso desse componente em formulários de muitos sites na internet para escolha de opções do tipo:
Selecionando-se qualquer um dos botões de opção em um grupo de opções através do mouse ou da barra de espaços, o que estiver selecionado anteriormente será desselecionado automaticamente.
Um Botão de opção pode estar habilitado ou desabilitado. Quando desabilitado, ele não recebe entrada nem do mouse nem do teclado. Quando o usuário clica ou usa a tecla Tab em um grupo de componentes Botão de opção, apenas o Botão de opção selecionado recebe o foco, ou seja, ele fica com uma borda em sua volta indicando que ele é o botão da vez. Quando um Botão de opção está com o foco, o usuário poderá utilizar as seguintes teclas para controlá-lo:
Tecla |
Descrição |
Barra de espaço |
Seleciona e desseleciona o componente. |
Shift + Tab |
Move o foco para o Botão de opção anterior do mesmo grupo. |
Tab |
Move o foco para o próximo Botão de opção do mesmo grupo. |
Para utilizar um componente Botão de opção na sua aplicação, faça o seguinte:
Se você clicar em cada um desses botões, deverá notar que todos os três poderão ser marcados ou selecionados, o que contradiz o que foi dito anteriormente, ou seja, esse componente só deveria permitir selecionar apenas um e somente um do grupo. Além disso, ainda é permitido desmarcar se clicarmos no mesmo botão novamente. E você poderia se perguntar: “E por que está sendo permitido selecionar todos os três botões?” Você está certo, mas vamos com calma.
Isso acontece porque cada um desses botões está isolado, eles não fazem parte do mesmo grupo. Para que um deles seja selecionado e outro desselecionado automaticamente, teremos que agrupá-los, como se fosse uma equipe. E então, como fazer isso? Bom, mais adiante você saberá como fazer isso, mas antes veremos algumas propriedades desse componente.
A seguir, algumas propriedades que podemos alterar para melhorar o desempenho desse componente.
Na seção Outras propriedades você poderá também configurar as seguintes propriedades:
Para resolver o problema dos Botões de opção discutidos no início desta aula, primeiramente devemos acomodar os botões (no mínimo dois) dentro de um painel, um recipiente (contêiner) que tem por finalidade separar esses botões de opção dos outros grupos de botões de opção (se houver na mesma aplicação).
Depois disso, entra em campo um outro componente chamado Grupo de botões (ButtonGroup), cuja finalidade é exatamente agrupar e dar um nome a esse grupo de botões de opção e gerenciar o estado de cada um deles que fizerem parte do mesmo grupo, garantido que um único botão do grupo possa ser selecionado de cada vez. Geralmente esses componentes dependem uns dos outros.
Para você entender direitinho como esses componentes funcionam juntos, criaremos uma pequena aplicação:
Até R$ 500,00
de R$ 501,00 até R$ 1.000,00
de R$ 1.001,00 até 3.000,00
acima de R$ 3.000,00
Mesmo que você executasse essa aplicação agora, todos os componentes Botão de opção ainda poderiam ser selecionados e não apenas um. Para que apenas um botão de opção seja selecionado, precisamos dar um nome ao grupo, como se fosse uma seleção de futebol, na qual existe apenas um goleiro ou um capitão. Para nomear esse grupo, utilizamos o componenteGrupo de botões (ButtonGroup). Para isso:
Mas nossa aplicação ainda não está completa. Para finalizar, precisamos dar uma funcionalidade a ela, ou seja, criar alguma ação para os botões. No nosso caso, queremos que quando cada um dos botões de opção for clicado, apareça uma mensagem no componente Rótulo. Para isso:
Figura 6 – Código gerado automaticamente para o evento do primeiro Botão de opção
jLabel1.setText("Você ganha muito pouco.");
Figura 7 – A mensagem entre parênteses desse código será mostrada no componente
Rótulo (jLabel1) quando o primeiro Botão de opção for clicado
Figura 8 – Aplicação sendo executada apenas com o evento do primeiro 'Botão de opção'
Se sua aplicação estiver funcionando de acordo com o que foi planejado, e esperamos que esteja, agora você terá que repetir esse mesmo processo para cada um dos três botões restantes, alterando apenas o código da mensagem para o seguinte:
Botão 2:
jLabel1.setText("Você está precisando melhorar.");
Botão 3:
jLabel1.setText("Você já ganha razoável.");
Botão 4:
jLabel1.setText("Está melhorando.");
Esse componente é semelhante ao componente Lista (que será discutido posteriormente em outra aula). A diferença é que a lista de itens de um componente Caixa de combinação fica escondida, restrita apenas a uma linha, ocupando dessa forma menos espaço do que outros componentes, como o Lista (JList) e o Área de texto (JTextArea), que você irá conhecer no decorrer deste curso. Esse componente é utilizado para armazenar informações em forma de uma lista, sendo cada item em uma linha, e apenas uma seleção será permitida.
Você poderá utilizar um componente Caixa de combinação em qualquer formulário ou aplicação, desde que a escolha seja de um único item da lista. Veja algumas sugestões:
Essas são situações em que apenas uma seleção é válida.
Um componente Caixa de combinação pode ser estático ou editável. Um componente Caixa de combinação estático permite ao usuário fazer uma seleção de uma lista apresentada, e uma Caixa de combinação editável é mais flexível, permite ao usuário digitar um texto diretamente em um campo de texto no topo da lista. Se a lista alcançar o rodapé do documento, ela será aberta para cima e não para baixo. Esse componente é composto de três subcomponentes:
Quando uma seleção é feita na lista, o item selecionado é copiado para a camada de texto do topo do componente. Não importa se a seleção foi feita com o mouse ou com o teclado.
Um componente Caixa de combinação recebe foco se você clicar na caixa de texto ou no botão. Quando ele estiver com o foco e editável, você poderá utilizar as seguintes teclas para manipular o texto:
Tecla | Descrição |
Tecla de seta para baixo |
A seleção é movida um item para baixo. |
End |
O ponto de inserção é movido para o final da caixa de texto. |
Enter |
Se a lista estiver aberta, o foco retorna para a caixa de texto e a lista fecha. |
Escape |
Se a lista estiver aberta, o foco retorna para a caixa de texto e a lista fecha. |
Home |
O ponto de inserção é movido para o início da caixa de texto. |
Page Down |
A seleção é movida uma página para baixo. |
Page Up |
A seleção é movida uma página para cima. |
Tab |
Move o foco para o próximo objeto (se houver). |
Shift + End |
Seleciona o texto a partir do ponto de inserção até o final. |
Shift + Home |
Seleciona o texto a partir do ponto de inserção até o início. |
Shift + Tab |
Move o foco para o objeto anterior (se houver). |
Tecla de seta para cima |
A seleção é movida um item para cima. |
Quando um componente Caixa de combinação possui o foco e é estático, as teclas alfanuméricas movem a seleção para cima e para baixo da lista para o próximo item que possuir o primeiro caractere digitado. Você também poderá utilizar as seguintes teclas para controlar um componente Caixa de combinação estático:
Tecla | Descrição |
Tecla de seta para baixo |
Abre a lista e permite selecionar um item. |
Tecla de seta para cima |
Permite selecionar um item para cima se a lista estiver aberta. |
End |
A seleção é movida para o último item da lista. |
Escape |
Fecha a lista. |
Enter |
Fecha a lista com o último item selecionado, se ela estiver aberta. |
Home |
A seleção é movida para o primeiro item da lista. |
Page Down |
A seleção é movida uma página para baixo. |
Page Up |
A seleção é movida uma página para cima. |
Shift + Tab |
Move o foco para o objeto anterior (se houver). |
Tab |
Move o foco para o próximo objeto (se houver). |
Quando a lista de uma Caixa de combinação possui o foco, as teclas alfanuméricas movem a seleção para cima ou para baixo da lista para o próximo item que possuir o primeiro caractere. Por exemplo, para selecionar o item Cadastro basta pressionar a tecla C, sem necessidade de percorrer toda a lista.
Para utilizar um componente Caixa de combinação na sua aplicação, faça o seguinte:
Figura 9 – Componente Caixa de combinação durante o projeto
Figura 10 – Componente Caixa de combinação em tempo de execução
Se você clicar na seta à sua direita ou pressionar a seta para baixo você notará que ele já está preenchido com quatro itens. É apenas uma sugestão do NetBeans para mostrar como o componente funciona. Antes de criarmos alguma aplicação prática utilizando esse componente, vejamos algumas de suas propriedades.
A seguir, você conhecerá algumas propriedades que podemos alterar para melhorar o desempenho desse componente.
Na seção Outras propriedades você poderá também configurar as propriedades:
Agora veremos como utilizar esse componente em uma aplicação prática juntamente com um componente Rótulo para mostrar o resultado quando um item da lista for selecionado:
Nossa Empresa
Produtos
Cadastro
Clientes
Fornecedores
Localização
Fale Conosco
Figura 11 – Preenchimento dos itens da lista de um componente Caixa de combinação
Figura 12 – Componentes Caixa de combinação e Rótulo durante o projeto
Terminada a etapa do projeto, vamos agora criar alguma funcionalidade para a aplicação. No nosso caso, criaremos uma ação de forma que quando um item da caixa de combinação for selecionado, ele apareça no componente Rótulo. Para isso:
Eventos à Action à actionPerformed[jComboBox1ActionPerformed]
Figura 13 – Criando uma ação para o componente Caixa de combinação
Figura 14 – Código gerado para o evento da Caixa de combinação
String a = (String)jComboBox1.getSelectedItem();
jLabel1.setText(a);
Figura 15 – Componente Caixa de combinação em execução
MetropoleDigital<https://moodle.metropoledigital.ufrn.br/metropole/mdweb/desenvolvimento_desktop/aula05.html>.
Acesso em 29.ago.2012