41
Unitri - 27/04/2013 Programação de Interfaces Gráficas 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

Aula 1 - carloseduardoxp.files.wordpress.com · Uma interface gráfica com o usuário apresenta uma interfacevisualparaumprograma. Em Java temos basicamente as APIs: Swing, AWT e

  • Upload
    haliem

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Unitri - 27/04/2013Programação de Interfaces Gráficas

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

Unitri - 27/04/2013Programação de Interfaces Gráficas

Introdução

Unitri - 27/04/2013Programação de Interfaces Gráficas

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

O que a disciplina abrange

Unitri - 27/04/2013Programação de Interfaces Gráficas

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)

O que a disciplina não abrange

Unitri - 27/04/2013Programação de Interfaces Gráficas

• 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

Objetivos Aula 1

Unitri - 27/04/2013Programação de Interfaces Gráficas

WYSIWYG→ What You See Is What You Get;

GUI → Graphical User Interface

Siglas e acrônimos

Unitri - 27/04/2013Programação de Interfaces Gráficas

Uma interface gráfica com o usuário apresenta umainterface visual para um programa.

Em Java temos basicamente as APIs: Swing, AWT eSWT

Introdução

Componentes AWT: Label, Button, TextField, List, etc.

Componentes Swing: JLabel, JButton, JTextField, JList, etc.

Componentes SWT: Label, Button, Text, List, etc

Unitri - 27/04/2013Programação de Interfaces Gráficas

API padrão para criação de componentes GUI no inícioda plataforma Java (entre 1995 até 1998);

Os objetos AWT são construídos sobre objetos decódigo nativo do Sistema Operacional em uso;

Os componentes GUI originais do pacote java.awt estãodiretamente associados com as capacidades de GUI daplataforma local.

AWT(Abstract Window Toolkit)

Unitri - 27/04/2013Programação de Interfaces Gráficas

API escrita puramente em Java e é a padrão desde1998;

JLabel, JButton, JTextField, etc, são componentes GUIdo pacote javax.swing. Os componentes do pacoteSwing 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 ser estendidos ou modificados

Swing

Unitri - 27/04/2013Programação de Interfaces Gráficas

Diagrama resumido com componentes AWT (amarelo)e Swing (azul)

Swing

Unitri - 27/04/2013Programação de Interfaces Gráficas

Componentes Swing - “pouca dependência da plataforma local”

Componentes AWT = “dependência da plataforma local”

Alguns componentes do pacote Swing ainda sãocomponentes com “dependência” (exemplo o JFrame).

Swing

java.lang.Object

java.awt.Component

java.awt.Container

java.swing.JComponent

Unitri - 27/04/2013Programação de Interfaces Gráficas

Uma janela (ou quadro) de nível mais alto (que não ficacontida dentro de outra janela) é um Frame ou, naversão Swing, um Jframe;

Os quadros são contêineres. Isso significa que umquadro pode conter outros componentes de interfacecom o usuário.

.

Frames ou JFrames

Unitri - 27/04/2013Programação de Interfaces Gráficas

.

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 oquadro 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.

Unitri - 27/04/2013Programação de Interfaces Gráficas

.

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.awt.Frame

java.swing.JFrame

java.swing.JComponente

java.swing.JPanel

Unitri - 27/04/2013Programação de Interfaces Gráficas

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

NetBeans

Unitri - 27/04/2013Programação de Interfaces Gráficas

Primeira aplicação Desktop

Unitri - 27/04/2013Programação de Interfaces Gráficas

Criação de Pacotes (packages)

Primeira aplicação Desktop

Unitri - 27/04/2013Programação de Interfaces Gráficas

Adicionando um Jframe no projeto

Primeira aplicação Desktop

Unitri - 27/04/2013Programação de Interfaces Gráficas

Editando propriedade title e clicando no preview

Primeira aplicação Desktop

Unitri - 27/04/2013Programação de Interfaces Gráficas

Adicionando um botão e alterando o nome do componente

Primeira aplicação Desktop

Unitri - 27/04/2013Programação de Interfaces Gráficas

Alterando o texto e adicionando um evento para fechar

Primeira aplicação Desktop

Unitri - 27/04/2013Programação de Interfaces Gráficas

Adicione um Jpanel, renomeie para pnlLogin e faça o exemplo abaixo na propriedade border

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

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)

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

Nomenclatura dos componentes:

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

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

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

Insira construtor, getter and setter, equals() and hashcode() e toString() em UsuarioLogin

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

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()

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

A classe UsuarioLoginControl deverá ser filha da classe UsuarioLoginView. Coloque os atributos txtUsuario e txtSenha como protected, para acessá-los diretamente na classe filha.

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

Deverá ser criado um novo pacote chamado br.edu.unitri.dao e uma nova classe chamada UsuarioLoginDao.

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

UsuárioLoginControl deverá ter uma referência para UsuarioLoginDao

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

UsuárioLoginControl também deverá implementar o método abstrato efetuarLogin() da classe Pai

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

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

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

Resultados:

Criando uma tela de Login

Unitri - 27/04/2013Programação de Interfaces Gráficas

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)

Criando uma tela de Menu

Unitri - 27/04/2013Programação de Interfaces Gráficas

Altere o nome dos componentes como mostra a figura abaixo

Clique com o botão direito no

componente mnuCadastro e

adicione um menuItem

Criando uma tela de Menu

Unitri - 27/04/2013Programação de Interfaces Gráficas

É possível colocar um atalho para cada item de menu editando a propriedade accelerator e colocar imagem com a propriedade icon

Criando uma tela de Menu

Unitri - 27/04/2013Programação de Interfaces Gráficas

Na classe UsuarioLoginControl, adicione o código para chamar o menu

Criando uma tela de Menu

Unitri - 27/04/2013Programação de Interfaces Gráficas

Adicione dois JInternalFrame no sistema, CompromissoView e ContatoView e crie eventos actionPerformed para cada um destes.

Criando uma tela de Menu

Unitri - 27/04/2013Programação de Interfaces Gráficas

Criar na tela de contato campos básicos de cadastro como nome, endereço, telefone, cidade, estado, email, etc..

Exercício para agora

Unitri - 27/04/2013Programação de Interfaces Gráficas

Criar um projeto para uso pessoal/profissional envolvendo menu e telas de login contemplando no mínimo todos os componentes usados até então.

Exercício para 4/5

Unitri - 27/04/2013Programação de Interfaces Grá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

Referências bibliográficas