• Nenhum resultado encontrado

Marcelo Henrique dos Santos

N/A
N/A
Protected

Academic year: 2021

Share "Marcelo Henrique dos Santos"

Copied!
55
0
0

Texto

(1)

PROGRAMAÇÃO ORIENTADA A EVENTOS

Marcelo Henrique dos Santos

Marcelo Henrique dos Santos

Mestrado em Educação (em andamento) MBA em Marketing e Vendas (em andamento)

Especialista em games

Bacharel em Sistema de Informação

(2)

PROGRAMAÇÃO ORIENTADA A EVENTOS

Marcelo Henrique dos Santos

AULA 02

Interface Gráfica em

Java

(3)

OBJETIVO

Apresentar o desenvolvimento de interfaces

gráficas com o usuário na linguagem Java

utilizando um alguns componentes básicos da

biblioteca Swing.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(4)

PRÉ-REQUISITO

Conhecer o fundamentos da linguagem Java, como

escopo das classes, declaração de variáveis,

declaração de métodos, dentre outros conceitos

básicos.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(5)

GUI (GRAPHICAL USER

INTERFACE)

• A interface gráfica com o usuário (GUI - Graphical User Interface) dão, de forma intuitiva, ao usuário um nível básico de familiaridade, sem que jamais tenha usado o programa. Dessa forma, é reduzido o tempo de aprendizado do programa pelo usuário.

• As GUIs são construídas a partir de componentes GUI. O componente GUI é um objeto com o qual o usuário interage através de, por exemplo: Mouse, Teclado, Alguma forma de

entrada, Reconhecimento de voz.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(6)

Bibliotecas: AWT x Swing

• Os componentes AWT (Abstract Windowing Toolkit) do pacote

java.awt estão diretamente associados com os recursos da

interface gráfica com o usuário da plataforma local. Assim, os componentes são exibidos com uma aparência diferente em cada plataforma. Por exemplo, de Windows, Apple Macintosh, Solaris, etc.

• A versão 1.2 da linguagem Java (Java 2), trouxe os componentes Swing do pacote javax.swing, desenvolvidos totalmente em Java, e possibilitam a especificação de uma aparência uniforme para todas as plataformas;

• Apesar de ser um novo pacote, alguns componentes Swing utilizam o pacote AWT como superclasses de suas classes.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(7)

Superclasses comuns

(maioria dos componentes Swing)

java.lang.Object

java.awt.Component

java.awt.Container

javax.swing.JComponent

PROGRAMAÇÃO ORIENTADA A EVENTOS

(8)

Componentes GUI Básicos

• JFrame = É um contêiner (formulário) para outros componentes GUI.

• JLabel = Área em que podem ser exibidos texto não-editável ou ícones.

• JTextField = Área em que o usuário insere dados pelo teclado. • JButton = Área que aciona um evento quando o usuário clica.

• JCheckBox = Possui dois estados: selecionado ou não-selecionado. • JComboBox = Lista de itens que o usuário pode fazer uma seleção

clicando em um item na lista ou digitando na caixa.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(9)

Componentes GUI Básicos

• JList = Área em que uma lista é exibida, possibilitando a seleção clicando em qualquer item da lista.

• JPanel = Contêiner em que os componentes podem ser colocados.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(10)

Componentes GUI

Básicos

JLabel JTextField JButton JCheckBox

JComboBox

JList

(11)

Componentes GUI Básicos

// Declaração e criação dos componentes

public class FrameSwing extends JFrame { private JLabel label;

private JTextField textField; private JButton button;

private JCheckBox checkBox; private JComboBox comboBox; private JList list;

private String opcaoCombo[] = {"Opcao 1", "Opcao 2"};

private String itemLista[] = {"Item 1", "Item 2", "Item 3"}; public FrameSwing() {

super("JFrame e alguns componentes básicos"); label = new JLabel("Label");

textField = new JTextField("TextField");

button = new JButton("Button"); checkBox = new JCheckBox("CheckBox");

comboBox = new JComboBox (opcaoCombo); list = new JList(itemLista);

(12)

Componentes GUI Básicos

// Adicionando os componentes na classe que estende o JFrame

// Contêiner da classe principal Container container = getContentPane();

// Seta um tipo de leiaute para o contêiner container.setLayout(new FlowLayout());

// Adiciona os componentes no contêiner container.add(label); container.add(textField); container.add(button); container.add(checkBox); container.add(comboBox); container.add(list); ...

(13)

Tratamento de Eventos

• As GUIs são baseados em eventos gerados pela interação do usuário. Por exemplo, mover o mouse, clicar no mouse, digitar um campo de texto, fechar uma janela, etc.

• Tanto os componentes AWT como Swing utilizam os tipos de eventos do pacote java.awt.event. Mas o Swing também tem seus próprios eventos no pacote javax.swing.event.

• Mecanismo de tratamento de eventos possui três partes: a origem do evento, o objeto evento e o “ouvinte” (listener) do ouvinte.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(14)

Tratamento de Eventos

• O programador precisa: Registrar um ouvinte de evento no componente e implementar um método de tratamento de eventos.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(15)

Tratamento de Eventos

• Algumas interfaces mais utilizadas:

• ActionListener • FocusListener • KeyListener • MouseListener • WindowListener

• Cada interface listener de eventos especifica um ou mais métodos de tratamento de evento que devem ser definidos na classe que implementa a interface.

PROGRAMAÇÃO ORIENTADA A EVENTOS

(16)

Tratamento de Eventos

Quando um botão for pressionado, este evento será tratado pela implementação do(s) método(s) da interface ActionListener

(17)

Tratamento de Eventos

public class FrameSwingEvento extends JFrame {

private JLabel label;

private JTextField textField; private JButton buttonMostrar; private JButton buttonLimpar; public FrameSwingEvento() {

super("JFrame com tratamento de evento do botão"); label = new JLabel("Nome");

textField = new JTextField("Nome do Fulano"); buttonMostrar = new JButton("Mostrar");

buttonLimpar = new JButton("Limpar");

// Cria uma instância do tratador de evento

TratamentoBotao tratador = new TratamentoBotao(); // Adiciona o tratador de evento aos botões

buttonMostrar.addActionListener(tratador); buttonLimpar.addActionListener(tratador);

(18)

Tratamento de Eventos

...

// Classe interna privada para tratamento de eventos

private class TratamentoBotao implements ActionListener { public void actionPerformed(ActionEvent event)

{

// Verifica se é o objeto buttonMostrar if ( event.getSource() == buttonMostrar )

JOptionPane.showMessageDialog(null, "Nome: " + textField.getText());

// Verifica se é o objeto buttonLimpar

else if ( event.getSource() == buttonLimpar ) textField.setText("");

} } ...

PROGRAMAÇÃO ORIENTADA A EVENTOS

(19)

Tratamento de Eventos

Ao pressionar o botão “Mostrar”, esse evento é tratado e a janela abaixo será apresentada.

(20)

Pacote Padrão awt

• Abstração do sistema nativo

• Toolkit gráfico e de interface

• Pacote awt

– elementos de interface

– diagramadores

– ferramentas gráficas

• Pacote awt.event

– eventos

(21)

Swing versus AWT

• Swing usa componentes leves (lightweight), non-peer-based GUI toolkit.

Os componentes do Swing são implementados sem código nativo – maior portabilidade.

– maior consistência de uso entre plataformas

• Pacotes javax.swing e javax.swing.event são os mais usados

javax.accessibility javax.swing.plaf javax.swing.text.html

javax.swing.text.parser javax.swing.border javax.swing.plaf.metal javax.swing.text.rtf javax.swing.colorchooser javax.swing.plaf.multi

javax.swing.tree javax.swing.event javax.swing.table javax.swing.undo javax.swing.filechooser

(22)
(23)

Exemplo de aplicação

Swing

(24)

Construção de uma

aplicação Swing

• De uma forma geral, uma aplicação Swing

contém os seguintes passos.

1. Importação dos pacotes Swing

2. Seleção da aparência (“

look & feel

“)

3. Definição do

contêiner

de mais alto nível

4. Definição dos componentes gráficos

5. Adição dos componentes a um container

6. Adição de bordas em componentes

(25)

Importando os pacotes

Swing

• A linha a seguir importa o pacote principal

para aplicações

Swing

:

import javax.swing.*;

import javax.swing.event.*;

• A maioria das aplicações Swing também

precisam de dois pacotes

AWT

:

import java.awt.*;

(26)

Selecionando o

“look & feel“

• Swing permite que o programador escolha a aparência (look & feel) mas apropriada através do método setLookAndFeel. Esse método recebe como argumento um nome inteiramente qualificado de uma subclasse de LookAndFeel.

• Exemplos: try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); .... OU .... UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception e) { } JFrame.setDefaultLookAndFeelDecorated(true); # Swing properties swing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel

(27)
(28)
(29)
(30)

Elementos de Interface

AWT

• Components e Containers

• java.awt.Component

– base de todos os componentes

– serializável

– abstrata

• java.awt.Container

– estende Component

– abstrata

(31)

Classes do pacote

java.awt

Hierarquia Básica de Classes de java.awt

Component Container Button Label TextComponent Panel Window Dialog Frame TextArea TextField

(32)

Pacote java.awt

• Class Component

Modela um elemento de interface.

– Define métodos, a princípio, comuns a qualquer elemento de interface.

–Métodos:

public void setForeground(Color c) public void setEnabled(boolean b) public Container getParent()

(33)

A classe Container

• Class Container

– Modela um objeto de interface que pode conter outros objetos, um agrupador. Fornece métodos para adicionar e remover componentes e para trabalhar com layout.

– Um contêiner pode conter outros contêineres (porque todo contêiner é um componente)

• Métodos:

public Component add(Component comp) public void add(Component comp, Object

constraint)

public void remove(Component comp)

public boolean isAncestorOf(Component c) public Component[ ] getComponents()

public LayoutManager getLayout()

(34)

Containers Concretos

de java.awt

• Panel

– Representa um grupo de elementos

– Deve ser incluído em outro container

– Usado para estruturar a interface

• Frame

– Estende

java.awt.Window

– Representa uma janela

– Possui título e borda

– Pode possuir menu

• Dialog

(35)

Exemplo

import java.awt.*;

public class Mundo {

public static void main(String[] args) { Frame janela = new Frame("Mundo");

Label mensagem = new Label("Olá Mundo!"); janela.add(mensagem);

janela.pack();

janela.setVisible(true); }

(36)

Componentes Concretos

java.awt

• Botão

– Modela um botão

public void setLabel(String label)

public void setActionCommand(String command) public void addActionListener(ActionListener l) public void removeActionListener(ActionListener l)

• Label

– Modela um texto não editável

public void setText(String text) public void setAlignment(int align)

(37)

Componentes Concretos

java.awt

• Texto

• CheckBox

• Lista

• Lista dropdown

• Canvas

(38)

Classes de Janelas

javax.swing

Window Dialog Frame JWindow JDialog JFrame

(39)

A classe JComponent

• A classe

JComponent

é a superclasse de todos os

componentes Swing.

• Os objetos

JButton

,

JCheckbox

, e

JTextField

são

todos exemplos de objetos das subclasses de

JComponent.

• A classe

JComponent

é uma subclasse direta da

classe

java.awt.Container

que, por sua vez, é uma

subclasse direta de

java.awt.Component

(40)

Classe JComponent

• Superclasse de muitos elementos do Swing, disponibiliza métodos para controlar:

– Tool tips – Bordas

– Propriedades

• Métodos de JComponent

void setToolTipText(String text) String getToolTipText()

void setBorder(Border border) Border getBorder()

final void putClientProperty(Object key, Object val) final Object getClientProperty(Object key)

(41)

A classe JComponent

• Classes definidas no pacote javax.swing e subclasses (diretas ou indiretas) de JComponent: – JButton – JLabel – JMenu – JMenuItem – JTextField – JTable

– JSlider - Simula um slider

– JProgressBar – Exibe o progresso de uma operação. • Comportamento comum de um JComponent

– Definir dimensões – Modificar cor

– Definir fontes

(42)

Pacotes Swing

javax.* – extensões padrão (substitui com.sun.java.*)

swing.* – componentes, modelos e interfaces

border – estilos de bordas

colorchooser – palheta de cores

event – eventos e listeners específicos do Swing

filechooser – seletor de arquivos

plaf.* – pacotes de look & feel plugável

table – componente tabela

text.* – framework de documentos

html.* – suporte para HTML 3.2

rtf – suporte para Rich Text Format

tree – componente árvore

(43)

Container em

javax.swing

• Swing possui vários componentes que são

contêineres de primeiro nível (top-level container)

– raiz de uma “containment hierarchy”

• Esse contêineres sao usados como o “arcabouço” das

GUIs:

JApplet, JDialog, JFrame,

and

JWindow

– aplicações tipicamente possuem pelo menos uma

hierarquia com um JFrame como raiz (janela principal)

– applets Swing contém uma hierarquia com JApplet como raiz

(44)

Container em

javax.swing

• Contêineres de primeiro nível possuem um contêiner

separado chamado de

”content pane”

que contém os

elementos visíveis. Os demais componentes são

adicionados no

”content pane”

.

• Para adicionar um componente a um

JApplet, JDialog,

JFrame,

ou

JWindow

, você deve primeiro invocar o

método

getContentPane

e adicionar o componente ao

objeto retornado.

(45)

Classe JFrame

• Modela uma janela do sistema nativo

• Equivalente, no Swing, à classe Frame do AWT • Métodos de JFrame

JRootPane getRootPane()

Container getContentPane()

void setJMenuBar(JMenuBar menubar) JMenuBar getJMenuBar()

void setDefaultCloseOperation(int op) • EXIT_ON_CLOSE

• HIDE_ON_CLOSE

• DISPOSE_ON_CLOSE • DO_NOTHING_ON_CLOSE

(46)

Estrutura de um JFrame

(47)

Camadas do JFrame

• RootPane

– gerencia as demais camadas – botão “default”

• LayeredPane

– Contém a menu bar e o ContentPane – Pode conter subcamadas (Z order) • ContentPane

– contém os componentes visíveis • GlassPane

– invisível por default

(48)

Exemplo de JFrame

import javax.swing.*;

public class HelloWorldSwing { /**

* Create the GUI and show it. For thread safety, this * should be invoked from the event-dispatching thread. */

private static void createAndShowGUI() {

//Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window.

JFrame frame = new JFrame("HelloWorldSwing");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Add the ubiquitous "Hello World" label

(49)

Exemplo de JFrame

frame.getContentPane().add(label); //Display the window.

frame.pack(); frame.setVisible(true); }

public static void main(String[] args) {

//Schedule a job for the event-dispatching thread //creating and showing this application's GUI.

SwingUtilities.invokeLater(new Runnable(){

public void run() {

createAndShowGUI(); }

}); }

(50)

Java Web Start

• E uma tecnologia que simplifica a

distribuição de aplicações. Clicando em um link de uma pagina Web a aplicação será baixada para a maquina do cliente e o JavaWebStart se encarregara de fazer o download de todos os arquivos

necessários.

• Ele tambem se encarregara de cuidar do update da aplicacao guardando-a em cache.

(51)

Classe JPanel

• Modela um container sem decoração,

normalmente utilizado para estruturar a

interface. Equivalente, no Swing, à classe

Panel do AWT

• Métodos de JPanel

JPanel()

JPanel(LayoutManager mgr)

void setLayout(LayoutManager mgr) Component add(Component comp)

(52)

Exemplo de JPanel

JFrame f = new JFrame("Teste");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b1 = new JButton("Botão 1");

JButton b2 = new JButton("Botão 2"); JPanel p = new JPanel();

p.add(b1); p.add(b2);

f.getContentPane().add(p); f.pack();

(53)

ATIVIDADE 04

Leia o artigo “TV ESCOLA INTERATIVA:

UMA PROPOSTA EDUCATIVA PARA TV

DIGITAL” e aponte os elementos do

framework GUI (Graphical User Interface)

da linguagem de programação Java que

foram utilizados no projeto.

PROGRAMAÇÃO ORIENTADA A EVENTOS

Marcelo Henrique dos Santos

(54)

BIBLIOGRAFIA

• SANTOS, Ismael H F. Módulo II : Interface com

usuário – GUI. Memória de aula - UniverCidade.

• SOBRAL, João Bosco; SCHWEBEL, Samuel Cristhian.

Interface Gráfica de Usuário Básica em Java.

Memória de aula da Universidade Federal de Santa

Catarina.

• DEITEL, Paul J.; DEITEL, Harvey. Java : como

programar. 8. ed. São Paulo : Pearson Prentice Hall,

2010.

PROGRAMAÇÃO ORIENTADA A EVENTOS

Marcelo Henrique dos Santos

(55)

BIBLIOGRAFIA

• PINHEIRO, Francisco A. C.. Fundamentos de

computação e orientação a objetivos usando Java.

Rio de Janeiro : LTC, 2006.

• KURNIAWAN, Budi. Java para a Web com servlets, JSP

e EJB. Rio de Janeiro: Ciência Moderna, 2002.

• Site da Sun, http://java.sun.com/j2se/

PROGRAMAÇÃO ORIENTADA A EVENTOS

Marcelo Henrique dos Santos

Referências

Documentos relacionados

Projeto JSF (Java JavaServer Faces – especificação para o desenvolvimento na plataforma WEB utilizando a linguagem Java e componentes voltados para este ambiente), JPA (Java

2 RELATÓRIO SOBRE A PETIÇÃO N. Da agenda da reunião constava a apreciação e relato, em execução do solicitado por Sua Excelência a Presidente da Assembleia Legislativa, da

Estes modelos podem ser utilizados como amplificadores de potência para executar programas de celulares, MP3 Players e similares, desde que tais aparelhos sejam projetados para

Estar apto e planejar e executar pequenos projetos, investigando questões relacionadas a problemas do cotidiano do aluno que afetam e a vida da comunidade;

 Utilizadas para exibir dados no formato tabular (em tabela), onde também seja possível selecionar itens (linhas) ou para.. edita-la ou mesmo para capturar o item ali

Personagens das ruas como a prostituta, a mulher transexual, o garoto de programa são representados nos jornais da cidade como transgressores da ordem social,

Para analisar os materiais de forma mais completa é necessário conhecer a microestrutura do material, ou seja, as fases presentes, contornos de grãos, presença ou não

artigo 10.º da Lei 12-A/2008, mantêm os regimes de cessação da relação jurídica de emprego público e de reorganização de serviços e colocação de pessoal em situação