RadioButton
Em computação, um botão de opção ou botão de rádio (radio button) é um elemento de interface gráfica (isto é um componente widget) com dois estados: selecionado (ativado) e não-selecionado (desativado), quando o usuário pressiona um botão do mouse ou uma tecla como Espaço. Botões de opção são usados num grupo para apresentar um conjunto limitado de escolhas (duas ou mais) que são mutuamente exclusivas. Deste maneira, quando o usuário seleciona um outro botão no mesmo conjunto, o outro botão já selecionado torna-se automaticamente desativado.
Exemplo:
Neste exemplo criamos um grupo de botões de radio que efetua as 4 operações básicas da matemática, usando o evento de item e a verificação do seu estado.
Java
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Radio extends JPanel implements ItemListener, ActionListener { // Declara Objetos JLabel rotulo; JRadioButton soma; JRadioButton subtrai; JRadioButton multiplica; JRadioButton divide; JLabel rotulo1; JLabel rotulo2; JTextField campo1; JTextField campo2; JButton botao; JTextArea texto; double total; public Radio() { // Cria novos Objetos rotulo = new JLabel("Escolha um RadioButton ou Alt + A, B, C ou C:"); soma = new JRadioButton("Soma"); subtrai = new JRadioButton("Subtrai"); multiplica = new JRadioButton("Multiplica"); divide = new JRadioButton("Divide"); rotulo1 = new JLabel("Numero"); campo1 = new JTextField("0,00"); rotulo2 = new JLabel("Numero"); campo2 = new JTextField("0,00"); botao = new JButton("OK"); texto = new JTextArea(5, 20); ButtonGroup grupo = new ButtonGroup(); grupo.add(soma); grupo.add(subtrai); grupo.add(multiplica); grupo.add(divide); // Seta atalho do teclado ex: ALT + A ou B ou C soma.setMnemonic(KeyEvent.VK_A); subtrai.setMnemonic(KeyEvent.VK_B); multiplica.setMnemonic(KeyEvent.VK_C); divide.setMnemonic(KeyEvent.VK_D); // Seta Evento soma.addItemListener(this); subtrai.addItemListener(this); multiplica.addItemListener(this); divide.addItemListener(this); botao.addActionListener(this); // Seta texto não editavel texto.setEditable(false); // Cria barras de rolagem JScrollPane barra = new JScrollPane(texto); // Seta restrições para barra de rolagem GridBagConstraints c = new GridBagConstraints(); c.gridwidth = GridBagConstraints.REMAINDER; // Seta tamanho do preenchimento para as barras c.fill = GridBagConstraints.BOTH; c.weightx = 1.0; c.weighty = 1.0; // cria paineis JPanel painel1 = new JPanel(); JPanel painel2 = new JPanel(); JPanel painel3 = new JPanel(); JPanel painel4 = new JPanel(); // adiciona componentes nos paineis painel1.add(rotulo); painel2.add(soma); painel2.add(subtrai); painel2.add(multiplica); painel2.add(divide); painel3.add(rotulo1); painel3.add(campo1); painel3.add(rotulo2); painel3.add(campo2); painel3.add(botao); painel4.add(barra, c); // adiciona painel e centraliza add(painel1, BorderLayout.CENTER); add(painel2, BorderLayout.CENTER); add(painel3, BorderLayout.CENTER); add(painel4, BorderLayout.CENTER); } public void itemStateChanged(ItemEvent e) { // Evento de mudança de estado do checkbox // captura item celecionado Object fonte = e.getItemSelectable(); int estado = e.getStateChange(); // coloca o cursor no final do texto para efeito de rolagem texto.setCaretPosition(texto.getDocument().getLength()); // Seleciona o estado sem esta condição o a rotina executa duas vezes // A primeira quando o item é selecionado a segunda quando é deselecionado // estados: Selected = selecionado - Deselected - deselecionado if (estado == ItemEvent.SELECTED) { // Define click no checkbox if (fonte == soma) { texto.append("Soma:" + "\n"); } if (fonte == subtrai) { texto.append("Subtração:" + "\n"); } if (fonte == multiplica) { texto.append("Multiplicação:" + "\n"); } if (fonte == divide) { texto.append("Divisão:" + "\n"); } } } public static void main(String[] args) { // adicona thread do swing javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // cria formulario JFrame formulario = new JFrame("Desenvolvimento Aberto"); formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // monta paineis de componetes no frame JComponent componentes = new Radio(); componentes.setOpaque(true); // Seta propriedades do frame formulario.setContentPane(componentes); formulario.setSize(400, 250); formulario.setVisible(true); } }); } // Evento do botão - OnClick public void actionPerformed(ActionEvent e) { // coloca o cursor no final do texto para efeito de rolagem texto.setCaretPosition(texto.getDocument().getLength()); // Verifica o objeto selecionado e efetua a operação correspondente //Soma if (soma.getSelectedObjects() != null) { total = Double.parseDouble(campo1.getText()) + Double.parseDouble(campo2.getText()); texto.append(campo1.getText() + " + " + campo2.getText() + " = " + String.valueOf(total) + "\n"); } // Subtração if (subtrai.getSelectedObjects() != null) { total = Double.parseDouble(campo1.getText()) - Double.parseDouble(campo2.getText()); texto.append(campo1.getText() + " - " + campo2.getText() + " = " + String.valueOf(total) + "\n"); } // Multiplicação if (multiplica.getSelectedObjects() != null) { total = Double.parseDouble(campo1.getText()) * Double.parseDouble(campo2.getText()); texto.append(campo1.getText() + " * " + campo2.getText() + " = " + String.valueOf(total) + "\n"); } // Divisão if (divide.getSelectedObjects() != null) { total = Double.parseDouble(campo1.getText()) / Double.parseDouble(campo2.getText()); texto.append(campo1.getText() + " / " + campo2.getText() + " = " + String.valueOf(total) + "\n"); } } }