Programação de Interfaces Gráficas Aula 1 Carlos Eduardo de Carvalho Dantas ([email protected]) http://carloseduardoxp.wordpress.com "Use o seu tempo para melhorar a si mesmo através dos escritos de outros homens, assim você ganhará facilmente o que outros trabalharam duro para conseguir.” Sócrates Programação de Interfaces Gráficas Unitri - 27/04/2013 Introdução Programação de Interfaces Gráficas Unitri - 27/04/2013 O que a disciplina abrange Criação de aplicações Desktop na plataforma Java; Uso e aplicação de boas práticas; Reutilização e organização de código Programação de Interfaces Gráficas Unitri - 27/04/2013 O que a disciplina não abrange Aplicação de banco de dados (disciplina Persistência com JDBC e JPA); Aplicação de relatórios (disciplina Ferramentas Gráficas e Relatórios) Programação de Interfaces Gráficas Unitri - 27/04/2013 Objetivos Aula 1 • Obter uma visão geral de componentes Swing; • Conhecer alguns componentes: JFrame, JButton, JLabel, JTextField, JPanel, JChekBox, JRadioButton; • Entender como cooperar componentes com classes que recebem os eventos e atuam em regras de negócio Programação de Interfaces Gráficas Unitri - 27/04/2013 Siglas e acrônimos WYSIWYG→ What You See Is What You Get; GUI → Graphical User Interface Programação de Interfaces Gráficas Unitri - 27/04/2013 Introdução Uma interface gráfica com o usuário apresenta uma interface visual para um programa. Em Java temos basicamente as APIs: Swing, AWT e SWT Componentes AWT: Label, Button, TextField, List, etc. Componentes Swing: JLabel, JButton, JTextField, JList, etc. Componentes SWT: Label, Button, Text, List, etc Programação de Interfaces Gráficas Unitri - 27/04/2013 AWT(Abstract Window Toolkit) API padrão para criação de componentes GUI no início da plataforma Java (entre 1995 até 1998); Os objetos AWT são construídos sobre objetos de código nativo do Sistema Operacional em uso; Os componentes GUI originais do pacote java.awt estão diretamente associados com as capacidades de GUI da plataforma local. Programação de Interfaces Gráficas Unitri - 27/04/2013 Swing API escrita puramente em Java e é a padrão desde 1998; JLabel, JButton, JTextField, etc, são componentes GUI do pacote javax.swing. Os componentes do pacote Swing são escritos, manipulados e exibidos em Java; O aspecto e a funcionalidade de um programa Java (com GUI Swing) são conhecidos como “look and feel” do programa e podem ser modificados; Componentes podem Programação ser estendidos ou modificados Unitri - 27/04/2013 de Interfaces Gráficas Swing Diagrama resumido com componentes AWT (amarelo) e Swing (azul) Programação de Interfaces Gráficas Unitri - 27/04/2013 Swing Componentes Swing - “pouca dependência da plataforma local” Componentes AWT = “dependência da plataforma local” Alguns componentes do pacote Swing ainda são componentes com “dependência” (exemplo o JFrame). java.lang.Object java.awt.Component java.awt.Container java.swing.JComponent Programação de Interfaces Gráficas Unitri - 27/04/2013 Frames ou JFrames Uma janela (ou quadro) de nível mais alto (que não fica contida dentro de outra janela) é um Frame ou, na versão Swing, um Jframe; Os quadros são contêineres. Isso significa que um quadro pode conter outros componentes de interface com o usuário. . Programação de Interfaces Gráficas Unitri - 27/04/2013 Frames ou JFrames . Alguns métodos interessantes para um quadro (JFrame): dispose( ): fecha a janela e libera seus recursos para o sistema, setIconImage( ): especifica um ícone (objeto Image), setTitle( ): muda o texto da barra de título, setResizeable( ): que especifica um boolean para determinar se o quadro será redimensionável ou não, setVisible( ): exibir o quadro, setSize( ): que especifica o tamanho do quadro, setLocation( ): que especifica a localização do quadro na tela. Programação de Interfaces Gráficas Unitri - 27/04/2013 Hierarquia componentes . O Swing implementa vários “design patterns” O.O., o que o torna o toolkit gráfico mais flexível, extensível e poderoso. java.lang.Object java.awt.Componente java.awt.Container java.awt.Window java.swing.JComponente java.awt.Frame java.swing.JFrame java.swing.JPanel Programação de Interfaces Gráficas Unitri - 27/04/2013 NetBeans Ambiente de desenvolvimento open-source escrito em Java; Alta produtividade em aplicações desktop e Java ME; Integração perfeita com os principais frameworks da Plataforma Java http://www.netbeans.org Programação de Interfaces Gráficas Unitri - 27/04/2013 Primeira aplicação Desktop Programação de Interfaces Gráficas Unitri - 27/04/2013 Primeira aplicação Desktop Criação de Pacotes (packages) Programação de Interfaces Gráficas Unitri - 27/04/2013 Primeira aplicação Desktop Adicionando um Jframe no projeto Programação de Interfaces Gráficas Unitri - 27/04/2013 Primeira aplicação Desktop Editando propriedade title e clicando no preview Programação de Interfaces Gráficas Unitri - 27/04/2013 Primeira aplicação Desktop Adicionando um botão e alterando o nome do componente Programação de Interfaces Gráficas Unitri - 27/04/2013 Primeira aplicação Desktop Alterando o texto e adicionando um evento para fechar Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login Adicione um Jpanel, renomeie para pnlLogin e faça o exemplo abaixo na propriedade border Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login Crie uma tela de login semelhante à tela abaixo: Componentes: JTextField, JPasswordField, JLabel, JButton, JSeparator, Jpanel (todos os componentes deverão ficar dentro do JPanel e um JLabel com a imagem) Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login Nomenclatura dos componentes: Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login Criação de novos pacotes: br.edu.unitri.model.domain e br.edu.unitri.control; Criação de novas classes: UsuarioLogin dentro de model.domain e UsuarioLoginControl dentro de control Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login Insira construtor, getter and setter, equals() and hashcode() e toString() em UsuarioLogin Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login Altere a classe UsuarioLoginView para abstrata e crie um método abstrato chamado efetuarLogin() Altere o evento do botão para invocar o método efetuarLogin() Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login A classe UsuarioLoginControl deverá ser filha da classe UsuarioLoginView. Coloque os atributos txtUsuario e txtSenha como protected, para acessálos diretamente na classe filha. Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login Deverá ser criado um novo pacote chamado br.edu.unitri.dao e uma nova classe chamada UsuarioLoginDao. Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login UsuárioLoginControl deverá ter uma referência para UsuarioLoginDao Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login UsuárioLoginControl também deverá implementar o método abstrato efetuarLogin() da classe Pai Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login O método main() que o NetBeans gerou automaticamente na classe UsuarioLoginView deverá ser movido para a classe UsuarioLoginControl, e na classe UsuarioLoginView deverão serem mostradas as mensagens de erro e sucesso Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Login Resultados: Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Menu Criar um novo Jframe em br.edu.unitri.view chamado MenuView e adicione um item JMenuBar. Altere os nomes e insira mnemônicos (alt + caractere) Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Menu Altere o nome dos componentes como mostra a figura abaixo Clique com o botão direito no componente mnuCadastro e adicione um menuItem Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Menu É possível colocar um atalho para cada item de menu editando a propriedade accelerator e colocar imagem com a propriedade icon Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Menu Na classe UsuarioLoginControl, adicione o código para chamar o menu Programação de Interfaces Gráficas Unitri - 27/04/2013 Criando uma tela de Menu Adicione dois JInternalFrame no sistema, CompromissoView e ContatoView e crie eventos actionPerformed para cada um destes. Programação de Interfaces Gráficas Unitri - 27/04/2013 Exercício para agora Criar na tela de contato campos básicos de cadastro como nome, endereço, telefone, cidade, estado, email, etc.. Programação de Interfaces Gráficas Unitri - 27/04/2013 Exercício para 4/5 Criar um projeto para uso pessoal/profissional envolvendo menu e telas de login contemplando no mínimo todos os componentes usados até então. Programação de Interfaces Gráficas Unitri - 27/04/2013 Referências bibliográficas [1] “Dominando NetBeans”; Edson Gonçalves; Editora Ciência Moderna; 2006; [2] Artigo “Swing + Beans Binding” – Java Magazine ed. 70; [3] Artigo “Criando Aplicações com MVC” – Java Magazine ed. 83 Programação de Interfaces Gráficas Unitri - 27/04/2013