Checkbox
A classe JCheckBox fornece suporte para os botões da caixa de seleção.
TextArea
A classe JTextArea fornece um componente que exibe várias linhas de texto, permitindo opcionalmente o usuário editar o texto.
ScrollPane
A JScrollPane fornece uma visão de rolagem de um componente. Quando a tela é limitada, use um painel de rolagem para exibir um componente que é grande ou um cujo tamanho pode mudar dinamicamente. Outros recipientes utilizados para economizar espaço na tela incluem painéis divididos por abas e painéis.
KeyEvent (mnemônico)
Geralmente a letra sublinhada no texto de cada componente mostra o mnemônico – a alternativa de teclado – para cada componente. Na maioria das GUIs Fell and Look, o usuário pode clicar em um componente, pressionando a tecla Alt e o mnemônico. Por exemplo, Alt+M. O KeyEvent é responsável pela definição do atalho no teclado, exemplo, KeyEvent.VK_M
GridBagConstraints
Uma classe que simplesmente armazena as informações para cada componente adicionado. A propriedade Fill determina como redimensionar o componente.
Exemplo:
Neste exemplo criamos três componentes checkbox e uma caixa de texto a cada mudança do estado de cada checkbox adicionamos o texto correspondente a caixa de texto, para outros detalhes leia os comentários no código
Java
import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class MontaGUI extends JPanel implements ItemListener { // Declara Objetos JLabel rotulo; JCheckBox opc1; JCheckBox opc2; JCheckBox opc3; JTextArea texto; public MontaGUI() { // Cria novos Objetos rotulo = new JLabel("Escolha um Checkbox ou Alt + A, B ou C:"); opc1 = new JCheckBox("Opção 1:"); opc2 = new JCheckBox("Opção 2:"); opc3 = new JCheckBox("Opção 3:"); texto = new JTextArea(5,20); // Seta atalho do teclado ex: ALT + A ou B ou C opc1.setMnemonic(KeyEvent.VK_A); opc2.setMnemonic(KeyEvent.VK_B); opc3.setMnemonic(KeyEvent.VK_C); // Seta Evento opc1.addItemListener(this); opc2.addItemListener(this); opc3.addItemListener(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(); // adiciona componentes nos paineis painel1.add(rotulo); painel2.add(opc1); painel2.add(opc2); painel2.add(opc3); painel3.add(barra,c ); // adiciona painel e centraliza add(painel1,BorderLayout.CENTER); add(painel2,BorderLayout.CENTER); add(painel3,BorderLayout.CENTER); } public void itemStateChanged(ItemEvent e) { // Evento de mudança de estado do checkbox // captura item celecionado Object fonte = e.getItemSelectable(); // coloca o cursor no final do texto para efeito de rolagem texto.setCaretPosition(texto.getDocument().getLength()); // Define click no checkbox if (fonte == opc1) { texto.append("Você clicou no CheckBox 1" + "\n"); } if (fonte == opc2) { texto.append("Você clicou no CheckBox 2" + "\n"); } if (fonte == opc3) { texto.append("Você clicou no CheckBox 3" + "\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 MontaGUI(); componentes.setOpaque(true); // Seta propriedades do frame formulario.setContentPane(componentes); formulario.setSize(400, 250); formulario.setVisible(true); } }); } }