Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 4 – Componentes Básicos do Swing Prof. Milton Escóssia 2018 PROGRAMAÇÃO II - CCT0418 Java Swing Framework O Swing é um framework que disponibiliza um conjunto de elementos gráficos para ser utilizado na plataforma Java. Árvore de Componentes Swing Classes da API AWT Classes da API SWING Containers Básicos do SWING As classes SWING que herdam da classe Container: JFrame, Container top-level do tipo janela com barra de título e bordas, mas sem menubar. Pode conter outros components como button, textfield etc. JPanel Container simples que não possui barra de título nem barra de menu e nem bordas. Pode conter outros components como button, textfield etc. Métodos básicos de um Container Método Descrição public void add(Component c) Insere um componente no container. public void setSize(int largura,int altura) Determina as dimensões (largura e altura) do container. public void setLayout(LayoutManager m) Define o gerenciador de layout para o container. public void setVisible(boolean status) Altera a visibilidade do container. Por default o valor é “false”. A Classe JComponent Todos os components da API Swing iniciam com a letra "J“ e são descendentes da classe JComponent. Ex: JPanel, JScrollPane, Jbutton, JTable. A classe JComponent herda da class Container, o qual herda de Component. A classe Component prove layout hints para suportar pintura e eventos. Possui suporte que permite adicionar componentes para um container. Principais Componentes do Swing Containers JFrame (1) JPanel (2) Saída de Dados JLabel (3) Entrada de Dados JTextField (4) JPasswordField (5) JTextArea (6) JCheckBox (7) JRadioButton (8) Listas JComboBox (9) JList (10) Ação JButton (11) Métodos comuns nos Componentes Swing get/setPreferredSize get/setSize get/setLocation getLength/Width repaint setBackground(Color) setFont(Font) isEnabled / setEnabled(boolean) isVisible / setVisible(boolean) Componentes Básicos do Swing JLabel JTexfField JButton JLabel Representa um rótulo de texto ou imagem. Principais métodos : void setText(String) - que altera o texto String getText() - retorna o texto atual. void setIcon(ImageIcon) – atribui uma imagem ao rótulo. Icon getIcon() - retorna a imagem atual. Exemplo com Texto - Estrutura do Projeto ProgII JanelaSimpl esComTexto JFrame A Classe Principal Exemplo com Texto - A janela Exemplo com Imagem - Estrutura do Projeto ProgII JanelaSimplesC omImagem JFrame A Classe Principal Exemplo com Imagem - A janela JTextField Representa um campo de texto onde o usuário pode informar um texto em uma linha. Construtores: JTextField( ) JTextField(int tamanho) JTextField(String frase) JTextField(String frase, int tamanho) Principais métodos: void setText(String) - altera o texto String getText() - retorna o texto atual Outras Propriedades Background: cor de fundo do componente. Editable: Propriedade que se estiver marcada permite a inserção/remoção pelo teclado. Font: Definir fonte tamanho e estilo de texto. Foreground: Cor do texto. horizontalAlignment: Alinhamento do texto dentro do componente. Text: texto que está dentro do campo. toolTipText: texto que aparece sobre cursor quando é posicionado sobre o componente. Como um hint. Cursor: define o cursor que aparece sobre o componente. Border: define a borda para o componente. selectedTextColor: cor do texto quando estiver selecionado. selectionColor: cor da seleção do texto. Exemplo com Input - Estrutura do Projeto ProgII JanelaSimplesC omInput JFrame A Classe Principal Exemplo com Input - A janela JButton É uma região gráfica que permite tratar diversos eventos como: click, mouse over, mouse out, etc. Permite ao usuário solicitar a execução de uma ação na aplicação. Pertence ao pacote: import javax.swing.JButton JButton – Construtores Construtor Descrição JButton - Principais Métodos Descrição Método JButton - ActionCommand Permite atribuir uma string (“tag”) ao botão para posterior identificação. Métodos: public void setActionCommand(String actionCommand) public String getActionCommand() Componentes do JButton Texto Imagem Texto e Imagem Exemplo com Botão - Estrutura do Projeto ProgII JanelaSimplesC omBotao JFrame A Classe Principal Exemplo com Botão - A janela Outros Exemplos de Uso de Botões JButton com Texto Instanciando: JButton com Imagem Instanciando: JButton com Texto e Imagem Instanciando: Como posso fazer para exibir os componentes JLabel, JTextField e JButton num JFrame ? Como Dispor Vários Componentes em um mesmo Container O posicionamento de componentes dentro de um container pode ser realizado de duas formas básicas: Posicional Uso de Gerenciadores de Layout Posicionamento Absoluto do Componente Sistema de Coordenadas de uma Janela: +x +y (0, 0) Posicionamento Absoluto do Componente Pode-se utilizar o método “setBounds(x, y, largura, altura)” para especificar a posição e o tamanho do componente da GUI. O método “setBounds” é utilizado para definer uma área retangular de um componente. A posição (x, y) determina as coordenadas do canto superior esquerdo do componente. Para posicionar um componente temos como premissa: Deve-se atribuir o valor “null” ao layout do container. Posicionamento Absoluto do Componente +x +y (0, 0) Nome Completo (0, 0) (10, 30) JLabel rotulo = new JLabel(“Nome Completo:"); rotulo.setBounds(10, 30, 40, 20); 40px 20px Exemplo de Posicionamento Absoluto Estrutura do projeto no NetBeans: Exemplo de Posicionamento Absoluto Definindo as posições dos componentes: Exemplo de Posicionamento Absoluto A classe executável: Exemplo de Posicionamento Absoluto A classe janela: Exemplo de Posicionamento Absoluto A classe janela (continuação): Uso de Gerenciadores de Layout Organiza os componentes em regiões em um container. Dividir a tela em regiões para posicionamento dos elementos de tela. Permite o auto ajuste dos elementos da tela em caso de redimensionamento da tela, ou mudança na resolução do display. Determinando Um Gerenciador de Layout É atribuído a um container de objetos (JFrame ou um JPanel). O método “setLayout( )” permite definir qual gerenciador de layout será atribuído ao container. Exemplo de gerenciadores de layout básicos: FlowLayout BorderLayout GridLayout Gerenciadores de Layout Padrão Os container possuem por padrão um gerenciador de layout atribuído: O gerenciador de layout padrão do JFrame é o BorderLayout. O gerenciador de layout padrão do JPanel é o FlowLayout. FlowLayout Gerenciador de layout que organiza os componentes uma fila, colocados da esquerda para a direita,por ordem de adição ao layout. Quando a borda do contêiner é alcançada, os componentes continuarão a ser exibidos na próxima linha. Os componentes podem ser alinhados: à esquerda, centralizados (padrão) alinhados à direita. FlowLayout FlowLayout BorderLayout Gerenciador de layout que organiza os componentes em 5 regiões: NORTH SOUTH EAST WEST CENTER BorderLayout Exercício 1 Reproduza a janela abaixo utilizando: A) Solução baseada com FlowLayout B) Solução baseada com BorderLayout Exercício 2 Reproduza a janela abaixo utilizando: A) Solução baseada em posicionamento B) Solução baseada com FlowLayout C) Solução baseada com BorderLayout Para resolver o exercício 2B preciso determinar o tamanho de cada componente dentro do gerenciador de layout. É possível fazer isso ? Usando setSize( ) x setPreferredSize( ) Existe uma outra forma de adicionar diversos componentes Swing em uma Janela (JFrame) ? Sim!!! Similar a forma como se organiza uma gaveta! Sim!!! Similar a forma como se organiza uma gaveta! Usando ORGANIZADORES! No Swing usa-se o Container JPanel Usando o Container JPanel Outra forma de adicionar elementos a JFrame é fazer uso de um JPanel. Para exibir vários componentes organizadamente é preciso usar um painel para agrupar esses componentes: o JPanel. Um JPanel permite colocar uma infinidade de elementos (JComponents) dentro dele. A ordem em que os componentes são adicionados importa. Exibindo o Conteúdo de um JPanel Após adicionar componentes a um JPanel deve-se adicioná-lo ao JFrame. Isso possibilita a criação de layouts mais complexos. Os componentes adicionados ao JPanel estão apenas na memória, não visíveis ainda. Para exibir esses componentes na tela gráfica (GUI) é necessário adicionar o JPanel ao JFrame. Este é responsável em exibir uma janela gráfica. Usando o Container JPanel Um panel é um container que pode-se usar (além do JFrame) Principais métodos: public JPanel(): Cria um JPanel com o gerenciador de layout padrão. O gerenciador de layout padrão do JPanel é o FlowLayout. public JPanel(LayoutManager layout): Cria um Jpanel com o gerenciador de layout especificado. Um JPanel pode depois ser acrescentado em um JFrame para melhorar o layout das telas. Exemplo JPanel – Adicionando Componentes Exemplo JPanel – Determinando o Layout Exemplo JPanel – Determinando o Layout no Construtor Exemplo JPanel – Determinando o Layout no Construtor Exercício 3 Crie um Projeto chamado CalculadoraSimples de forma a reproduzir a janela segundo as regras abaixo: Utilize somente os containers: JFrame e Jpanel O JFrame possui como dimensões: LARGURA = 250; ALTURA = 350; Utilize apenas os gerenciadores de layout: FlowLayout e BorderLayout. Utilize os componentes: JTextField JButton Como fazer com que ao clicar no botão ele exiba uma mensagem num JOptionPane ? Tratamento de Eventos Eventos podem ser disparados por usuários, sistema operacional, ou por outras aplicações. Aplicações baseadas em GUIs são baseadas em eventos. Eventos são tarefas realizadas quando um usuário interage com algum componente GUI. Tratamento de Eventos As ações do usuário são convertidas em eventos. Exemplo no Java: Quando ocorre uma ação (ActionEvent); Clique do mouse (MouseEvent); Apertar em uma tecla (KeyEvent); Fechar uma janela (WindowEvent); Tratamento de Eventos As tarefas de respostas realizadas em um evento são conhecidas como handler de evento e o processo total de responder a eventos é conhecido como tratamento de evento. Cada tipo de evento precisa ser implementada uma interface de escuta. As informações de evento são armazenadas em um objeto de uma classe que herda da classe AWT.Event. Classes de Evento do pacote java.awt Fonte: https://www.devmedia.com.br/trabalhando-com-eventos-na-gui-do-java/25898 Interfaces Ouvintes de Eventos dos Pacotes javax.swing.event. Fonte: https://www.devmedia.com.br/trabalhando-com-eventos-na-gui-do-java/25898 Elementos do Evento Existem três elementos para o funcionamento do tratamento de evento: Origem do Evento: é o componente GUI com qual o usuário interage. Objeto do Evento: contém os dados do evento invocado, sendo como uma referência à origem do evento e quaisquer informações específicas do evento que podem ser exigidas pelo ouvinte para testar o evento. Ouvinte do Evento: é um objeto que é notificado pela origem de evento quando um evento ocorre. Tratando Eventos de Clique no Botão Quando um usuário clica em um botão, é necessário informar ao componente JButton que há um interesse em tratar esse evento. O tratamento ao evento é implementado usando a interface ActionListener. Tratando um Evento com ActionListener Deve-se habilitar o componente para “ouvir” o eventos através do método addActionListener(). Deve-se passar como parâmetro a referência ao container que receberá o evento. Consiste na referência do objeto da classe que implementa a interface ActionListener. Tratando um Evento com ActionListener Consiste em definir o método de manipulação de evento da interface ActionListener: public void actionPerformed(ActionEvent evento) { // Aqui deve conter o código do tratamento do evento. } Formas de Tratamento de Evento Por Classe Anônima Por Implementação de Interface Por Handler Tratamento do Evento por Classe Anônima Tratamento do Evento por Implementação da Interface Listener Tratamento do Evento por Implementação de um Handler Referenciando o Handler para Tratamento do Evento Faz a chamada a instância do BotãoHanfler Exemplo 1 Implementar uma janela com o botão “Exibir Mensagem”. Ao clicar no botão deverá exibir uma janela de diálogo com a mensagem “Boa noite pessoal !!!”. Exemplo 1 – Classe Executora Exemplo 1 – A Classe Janela Exemplo 1 – O método Configurar Janela Exemplo 1 – O método Inicializar Componentes Exemplo 1 – O método Criar Botão Mensagem (tratamento por classe Anônima) Exercício 4 Altere o exemplo 1 (anterior) para que o tratamento de evento da clique sobre o botão seja realizado por implementação da interface ActionListener na classe Janela. Exercício 5 Altere o exercício 4 (anterior) adicionando 5 botões, de forma que ao clicar sobre cada botão, onde cada botão deverá exibir uma mensagem diferente. Exercício 6 Altere o exercício 5 (anterior) realizando o tratamento de evento por classe externa (Handler). Exercício 7 - Calculadora Altere o Projeto chamado CalculadoraSimples de forma a seguir as regras do slide seguinte: Utilize somente os containers: JFrame e JPanel Utilize apenas os gerenciadores de layout: FlowLayout e BorderLayout. Utilize os componentes: JTextField JButton Exercício 7 - Calculadora Construção da interface Usar componentes: JFrame, JPanel, Layout, JTextField, JButton Deverá conter botões representando: Os dígitos de 0 a 9 As operações C, +, - , *, / e = Implementar a lógica da calculadora Usar somente uma caixa de entrada A caixa de entrada deverá estar bloqueada para digitação. Ao clicar no botão do nº deverá inserir o nº na caixa de entrada. Ao clicar na operação deverá exibir limpar a tela para entrada de novo valor, caso já tenha um valor exibir o resultado da operação. Exercício 8 – Formulário de Cadastro de Alunos Crie um projeto chamado CadastroAluno e crie o formulário abaixo: Ao clicar no botão salvar deverá validar os campos obrigatórios: Nome do aluno, Fone e Endereço Matricula: Nome do Aluno*: Emai: Telefone*: Endereço*: Salvar Carregar Foto Referências SWING - Componentes mais importantes e suas propriedades https://www.devmedia.com.br/swing-componentes-mais- importantes-e-suas-propriedades/16113 Propriedades do JLabel - Java Swing componentes NetBeans – Parte 6 https://www.devmedia.com.br/propriedades-do-jlabel-java- swing-componentes-netbeans-parte-6/21807 Java Swing: Propriedades do JTextField https://www.devmedia.com.br/java-swing-propriedades-do- jtextfield/21207 Apostilas - Java Swing Caelum – FJ-16:Laboratório Java com Testes, XML e Design Patterns Disponível em: http://www.caelum.com.br/apostila-java- testes-xml-design-patterns/ Capítulos: Capítulo 5 - Interfaces gráficas com Swing Capítulo 8 - Mais Swing: layout managers, mais componentes e detalhes Capítulo 11 - Apêndice - Mais swing e recursos avançados
Compartilhar