Java: Introducao ao Swing
-
Upload
arthur-emanuel -
Category
Technology
-
view
62 -
download
3
Transcript of Java: Introducao ao Swing
Interfaces Gráficas em Java com Swing
Arthur Emanuel de Oliveira Carosia
Swing
• Biblioteca com muitas possibilidades de elementos para interface gráfica em Java
• A partir do Java 1.2• Uso simples• Portabilidade
– O look-and-feel do Swing é único em todas as plataformas onde roda, seja ela Windows, Linux, ou qualquer outra.
Portabilidade
• Desenvolvida tendo em mente o máximo de portabilidade possível.
• Por exemplo, – o posicionamento relativo de componentes, em
detrimento do uso de posicionamento fixo
Look And Fell
• Aparência da aplicação– Cores– Formatos– Etc
• Por padrão, o Java vem com um look-and-feel próprio, que se comporta exatamente da mesma forma em todas as plataformas suportadas.
Look And Feel
• Por isso é possível alterar qual o look-and-feel a ser usado em nossa aplicação.– Windows– Mac OS– Look and Feel baixados da internet.
Pacote
• A biblioteca do Swing está no pacote javax.swing:– Import javax.swing;
JOptionPane
• A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras.
• A classe JOptionPane nos proporciona uma série de métodos estáticos que ao serem invocados criam caixas de diálogos simples e objetivas.
JOptionPane
• A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras.
JOptionPane.showMessageDialog(null, "Minha mensagem!");
JOptionPane
• A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras.
JOptionPane.showMessageDialog(null, "Minha mensagem!");
Frame no qual a caixa de diálogo é exibida. Se o valor for null, então é utilizado um Frame padrão.
JOptionPane
• A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras.
JOptionPane.showMessageDialog(null, "Minha mensagem!");
Mensagem a Ser Exibida
JOptionPane
• A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras.
JOptionPane.showMessageDialog(null, "Minha mensagem!");
JOptionPane
• Outros métodos
JOptionPane
Exercício
• Adapte o problema da biblioteca para que seja feita leitura dos dados do teclado utilizando a classe JOptionPane.
• Utilize também um JOptionPane para exibir mensagem de erro caso o nome digitado para alguma String do programa seja vazio ou nulo.
JFrame
• Moldura ou janela do programa
• Exibe elementos de interface do usuário
• Interações:– Maximizar, minimizar, fechar– Invocar outros Jframes ou janelas
JFrame
JPanel
• Conteúdo (Painel) que será exibido no Jframe• Possui componentes (JComponents) que serão
exibidos no Jframe• Exemplos de Componentes:
– Botões, imagens, texto, etc • Sobre um Jframe, podem serencaixados vários JPanels
JPanel
JLabel
• Rótulos que podem conter imagens ou textos que podem ser exibidos em frames
• Os JLabels são classes derivadas da JComponent e fazem parte do pacote swing.
• Uso:– JLabel meuRotulo = new JLabel(“Meu Texto”);
JTextField
• Caixas de Texto• Métodos importantes:
– getText(String)– String:setText()– setEditable(Boolean)
• Uso:– JTextField texto = new JTextField(“Conteudo”);
• Para senhas, existe a classe JPasswordField, que possui comportamento semelhante ao JTextField.
JButton
• Botões que ao serem clicados disparam um evento. • Este evento pode ser tratado pelo programador
para que o programa siga seu fluxo adequado.
• Uso:– JButton botao = new JButton("Clique em mim!");
• Tratamentos de Eventos serão apresentados mais adiante nesta mesma aula.
Exercício• Crie uma interface simples com rótulos, campos de texto e
botões para login do usuário, contendo os seguintes elementos:– Nome de usuário– Senha– Botão de limpar– Botão de login
• Crie um ArrayList com 5 usuários que podem ter acesso à sua aplicação.
• Implemente a funcionalidade que, ao clicar no botão de login, verifica se os dados digitados pertencem a esse ArrayList.
Integração de Interface com Código-Fonte
• É uma boa prática separar o código da aplicação do código da interface.
• Evitar a mistura de código da lógica da aplicação com código de interface do usuário.
• Criação de pacotes separando o que é interface do que é lógica da aplicação.
Exercício
• Incremente a aplicação em Java que cadastra livros e artigos em uma biblioteca.
• Crie uma interface adequada para esta funcionalidade utilizando JFrame, JPanel, JButton, JTextField e JLabel.
Eventos
• Um programa nada mais é que uma série de opções, onde cada usuário vai fazer o que quiser, clicando em botões, apertando teclas do teclado, rolando a barra de informações, marcando, selecionando, escrevendo, minimizando, fechando e uma infinidade de possibilidades.
• Cada vez que o usuário faz uma destas coisas, dizemos que foi realizado um evento.
Eventos
• O que a GUI (Graphic User Interface) faz é nada mais que tratar eventos, que são normalmente disparados pelo usuário.
Eventos
• A classe ActionListener é uma interface, ou seja, é classe composta apenas de métodos abstratos.– Classe responsável pelo tratamento de eventos.– A classe não sabe que tipos de eventos vamos tratar
em um aplicativo– Necessita ser implementada pelo aplicativo que for
tratar eventos– essa classe é que vai fica 'esperando' algo ocorrer no
programa (um evento) para ser tratado
Eventos
• A interface ActionListener possui somente um método: – actionPerformed, é o responsável por tomar
alguma ação caso algum evento ocorra.• A interface fica na espera de algum evento, e
caso ocorra ele é imediatamente passado para o método actionPerformed
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;
Eventos
• Event Handling– Tratador de eventos
• Implementar a classe ActionListener
O método actionPerformed recebe um argumento 'evento' do tipo ActionEvent.Este argumento 'evento' vai armazenar a natureza do evento, ele sabe especifica e exatamente que componente ocorreu o evento.Tal componente está armazenado no método getSource() deste objeto.
Eventos
• Existem diferentes formas de tratar eventos.• Seja com uma classe exclusiva para isso, ou classes
internas ou objetos anônimos.• O NetBeans possui uma interface agradável e
simples para tratar eventos, que será apresentado mais à frente.
• Referências– http://www.javaprogressivo.net/2013/11/Tratamento-d
e-eventos-extends-implements-classe-interna-objeto-anonimo-mudar-background-jframe.html
– http://www.javaprogressivo.net/2013/11/Tratamento-de-eventos-extends-implements-classe-interna-objeto-anonimo-mudar-background-jframe.html
JCheckBox• Fornece diversas opções para escolha
A lógica dela, em Java, é que se ela estiver marcada, é como se retornasse o valor lógico true, e se não estiver marcada,
retorna false.
Precisamos tratar os eventos e ações, e isso é possível em JCheckBox através da classe ItemListener e seu método
itemStateChanged.
JCheckBox
• Fornece diversas opções para escolha
JCheckBox java = new JCheckBox("Java"); JCheckBox php = new JCheckBox("PHP"); JCheckBox csharp = new JCheckBox("C#"); JCheckBox c = new JCheckBox("C");
Método que verifica se um botão foi selecionado:
boolean:isSelected()
JRadioButton• Fornece uma opção de escolha única entre diversas opções.
• Precisa de um gerenciador de eventos, handler.– Deve, obrigatoriamente, implementar a interface ItemListener.– Nessa interface, devemos implementar, obrigatoriamente, o
método itemStateChanged.Método que vai verifica se algo foi clicado, marcado ou desmarcado.
JRadioButton
JRadioButton java = new JRadioButton("Java", false);JRadioButton csharp = new JRadioButton("C#", false);
Método que verifica se um botão foi selecionado: boolean:isSelected()
ButtonGroup
• Controla se uma interface necessita de vários grupos de botões diferentes.
• Declarar objetos que são os grupos e adicionar a esses grupos os RadioButtons que são relacionados a cada um.
ButtonGroup grupo1 = new ButtonGroup(); grupo1.add(java);
grupo1.add(csharp);
Exercícios
• Faça com que apareçam as interfaces na seqûencia: interface de login, depois interface de cadastrar livros.
• O usuário que for cadastrado no sistema irá ter acesso ao cadastro dos livros quando clicar no botão de Login e gerar um evento de clique do mouse.
• Incremente a inferface de cadastro de livros para ter um componente que discrimine se o cadastro é de livros ou artigos.
Exercícios
• Faça um programa que receba os coeficientes de uma equação do segundo grau e retorne suas raízes, mesmo as complexas, através de caixas de diálogo (com JOptionPane).
• Considere que uma equação do segundo grau é uma classe com os atributos a, b e c e possui métodos que determinam suas raízes.
Exercícios
• Faça outra versão para o mesmo programa utilizando Jframe, caixas de texto para a inserção dos componentes a,b e c e um botão que calcula o resultado da equação.
• Faça com que os resultados da equação preencham um campo de texto após o clique no botão.
• Esse campo de texto não pode ser modificado pelo usuário, somente pela aplicação.
Utilizando o NetBeans
• O NetBeans possui um ambiente dedicado ao design de interfaces de usuário.
• A manipulação dos componentes de interface é realizada visualmente.
• Toda manipulação visual tem um efeito no código-fonte, que é gerado automaticamente pela IDE.
Utilizando o NetBeans
Criando um novo JFrame
Utilizando o Netbeans
Janela do Design da Interface do Usuário
Utilizando o Netbeans
Aba de Design
Utilizando o NetbeansJanela que contém os
componentes que podem ser inseridos na interface
Utilizando o Netbeans
Janela que contém:• Propriedades dos componentes• Eventos dos componentes• Elementos associados ao código-fonte
Utilizando o Netbeans
Código-fonte resultado da geração automática pelo Netbeans
Exercício• Crie um jogo de adivinhar palavras.• Cada palavra possui a sua quantidade de caracteres e várias
dicas, que serão exibidas para o usuário. • Ao acertar uma palavra, o usuário ganha 5 pontos e a
próxima palavra é exibida.• O usuário pode ter 3 chances de errar uma palavra até dar
fim de jogo e exibir a sua pontuação acumulada.• O jogo deve possuir uma interface gráfica composta de:
– Caixa de texto para digitar a palavra– Botão para confirmar a palavra digitada– Textos para exibir as dicas das palavras
Referências
• http://www.caelum.com.br/apostila-java-testes-xml-design-patterns/interfaces-graficas-com-swing/#5-3-look-and-feel
• http://www.javaprogressivo.net/