Aplicações de Linguagem de Programação Orientada a Objeto

Documentos relacionados
Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

Aula 2 Even e to t s d o M ouse

Criando interfaces com o usuário. Continuação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Agenda. JFC (Java FoundaNon Classes) Interfaces Gráficas: layout manager JFC. Componentes do Swing. Pluggable Look and Feel

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Gerenciamento de Layout

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER.

MANIPULAÇÃO DE EVENTOS

TRATAMENTO DE EVENTOS EM JAVA USANDO SWING. George Gomes Cabral

Prof. Fernando V. Paulovich 25 de julho de SCC Programação Orientada a Objetos

MÓDULO 4 SWING Parte 3

Programação Gráfica em Java Alguns Componentes javax.swing

Interfaces Gráficas POO. Prof. Márcio Delamaro

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

Programação II. Cassio Diego

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

Layout. Programação Orientada a Objetos Java. Prof. Geraldo Braz Junior. Baseado em material original de João Carlos Pinheiro CEFET/MA

Aula Prática Criando Views e Controles

Introdução à Programação Gráfica em Java

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof.

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Gerenciadores de Layout

Processo Básico: OO + Eventos. Java First-Tier: Aplicações. Construção de Interface gráfica. Exemplo. Exemplo. Exemplo. Hierarquia de Composição

Arquivos. Prof. Leonardo Barreto Campos 1

Aula 2 Eventos do Mouse by Pearson Education do Brasil

Teste de Software: Existe Isto? Jorge Fernandes Junho de 2004

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1.

A classe JTextField

Elaborando as Interfaces Aulas 31, 32 e 33

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Nona aula

Encerrando Introdução a Objetos e Classes Redefinição de Métodos (1)

Interfaces Gráficas com Swing. Professor Leonardo Larback

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Vector Java. Empregado.java

Elaborando as Interfaces dos trabalhos das aulas 28, 29 e 30.

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Font size Animation FACULDADE DE TECNOLOGIA SENAC PELOTAS

Aplicação Linguagem de Programação Orientada a Objeto

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Prof. Msc. Vladimir Camelo

Objectivos:. Construir programas com interfaces gráficas Graphical User Interface (GUI) application programs

Java Standard Edition (JSE)

Aula 12 POO 1 Interface Gráfica no Java. Profa. Elaine Faria UFU

8. Interfaces Gráficas de Usuário

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 4- Tratamento de Eventos em Interfaces Gráficas

Tiago Alves de Oliveira. Tiago Alves de Oliveira

Aula 11: Interfaces gráficas (1/2): elementos de interface Swing

Componentes GUI A aparência e maneira como um usuário pode interagir com componentes AWT diferem de acordo com a plataforma. Componentes Swing permite

Caso não exista nenhum listener registado no objecto que gera o evento, este não terá qualquer efeito.

Orientação a Objetos

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Programando GUIs

Elaborando as Interfaces Aulas 43, 44 e 45

Elaborando as Interfaces dos trabalhos das aulas 25, 26 e 27.

Java - Swing. Raphaela Galhardo raphaela@j2eebrasil.com.br

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing

Interface Gráfica com o Usuário (GUI) Profa. Isabel Harb Manssour (Material adaptado das aulas da Profa. Luciana Nedel e do Prof.

Adding User Interaction

Model-View-Controller (MVC)

TIC - Programação Visual. Componentes. Prof. Edwar Saliba Júnior Setembro de Unidade 14 Componentes 1

Componentes Parte 01

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

COM220 Aula 17: Interface Gráfica Containers Swing

Programação Orientada a Objetos

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Desenvolvimento de Aplicações Desktop

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

JAVA. Gerenciadores de Layout. Tiago Alves de Oliveira

Java Foundation Classes Coleção de pacotes para criação de aplicações completas Desktop Interfaces gráficas (GUIs- Graphical User Interface)

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 19, 20 e 21

JTextArea JMenuBar JTable JDesktopPane e JInternalFrame

Programação Orientada a Objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Componentes Parte 02

Orientação a Objetos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

JMENU, JDESKTOPPANE E JINTERNALFRAME

Como tratar eventos - A interface ActionListener e o método actionperformed

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

Componentes no Java SE

Criação de Aplicações GUI. Java JFC / Swing

Módulo 7. Interface Gráfica com o Usuário GUI - Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

Classes e Objetos. Sintaxe de classe em Java

Principais Classes Swing AWT

Prof. Responsáveis Wagner Santos C. de Jesus

Programação Gráfica em Java.

Escrito por Sex, 14 de Outubro de :26 - Última atualização Seg, 05 de Dezembro de :59

Gerenciadores de Layouts

Tratamento de Eventos

Programação Visual em Java

Adicionados a componentes que possuem o método setjmenubar. tem itens de menu e são inseridos na MenuBar podem funcionar como submenu

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

AULA 10 - CCT0024 Linguagem de Programação Objetivos da aula. Janelas para leitura e exibição de textos

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Eclipse IDE Dá-se importância aos antepassados quando já não temos nenhum. Francois Chateaubriand

Natureza do Software e dos Sistemas

Aula 15 Interface Gáfica. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Unidade 12: Programação de Banco de Dados com Java Prof. Daniel Caetano

Transcrição:

Aplicações de Linguagem de Programação Orientada a Objeto Eventos Professora Sheila Cáceres

Programação Orientada a Eventos No modelo imperativo tradicional, o programador determina a ordem de entrada dos dados. Em contraste, os programas orientados a eventos não controlam a sequência na qual ocorrem eventos de entrada; em vez disso, eles são escritos para reagir a qualquer sequência razoável de eventos. O sistema em tal paradigma é programado em sua base em um laço de repetição de eventos, que recebem repetidamente informação para processar e disparam uma função de resposta de acordo com o evento. Ou seja, as entradas governam a sequência de operações executadas pelo programa. 2

3

Programas acionados por eventos Um programa acionado por eventos tipicamente não tem um ponto de parada predeterminado, como chegar ao fim do arquivo lendo os dados. A entrada de um programa acionado por eventos vem de fontes de eventos autônomas distintas que podem ser sensores de um robô ou botões em uma aplicação interativa. Esses eventos ocorrem de forma assíncrona e cada um deles entra em uma fila de eventos para serem tratados A medida que o tempo passa, um laço de controle recupera o próximo evento dessa fila e o manipula. 4

Fontes de Eventos (disparadores de eventos) São aqueles componentes que accionam os eventos (ex em java: JButton, JLabel, JTextField). Em java os objetos que podem ser fontes de eventos são subclasses (ou filhos) da classe JComponent. Cada fonte de evento em uma interação com o usuário gera um objeto evento. Exemplo, um botão pode ser a fonte de um evento e em java poderia gerar um objeto evento da classe ActionEvent. 5

Eventos São as ações que o usuário realiza sobre o programa. Exemplos de eventos típicos são Clique do mouse sobre um botão Escolher uma opção de um menu Escrever uma caixa de texto Mover o mouse Geralmente cada vez que se produze um evento se cria um objeto que contem informações sobre este evento. Em java os tipos de eventos que podem ocorrer são definidos pelas subclasses da classe java.awt.event. 6

Listener (Ouvinte) Servem para reconhecer (ouvir) a ocorrências de eventos particulares acontecendo sobre fontes de eventos para poder realizar alguma ação. Uma única fonte pode ter múltiplos listeners. Um único listener pode responder a múltiplas sources. As classes que detetam o evento implementam da interface Listener e portanto precisam implementar todos os métodos declarados na interface. Adaptadores: São classes por default que implementam os métodos dos listeners. Isto permite herdar delas implementando somente os métodos desejados. Exemplo: para que um programa possa detectar a ocorrência da seleção de um botão, o botão precisa chamar 7

Métodos manipuladores (Handlers) Para responder aos eventos detectados pelos listeners precisamos implementar métodos especiais chamados de handlers (manipuladores). Em java implementamos os handlers dentro das classes listeners. 8

Alguns eventos, listeners e operações em Java Evento Listener Handlers 9

Manipulando eventos (Exemplo) ActionEvent (evento de enter em botão): a aplicação deve criar um objeto que implementa a interface ActionListener e registrar esse objeto como um ouvinte (listener) desse botão usando o método addactionlistener Quando o botão é pressionado, ele dispara um evento, o que resulta na execução do método actionperformed do objeto ouvinte. O argumento para esse método é um objeto ActionEvent que informa acerca do evento e de sua fonte.

13

Exemplo de fonte de aplicação que trata eventos: public class Aplicação{ public static void main(string argumentos[]){ Janela jan = new Janela(); TratEventosJan trat = new TratEventosJan(); jan.addwindowlistener(trateventos()); jan.show(); A primeira classe é a que define a aplicação class Janela extends Frame{ public Janela(){ setbackground(color.blue); add( Center, new Label( Janela da aplicação )); A segunda classe é a que define a interface (o tipo de janela) da aplicação class TratEventosJan extends WindowAdapter{ public void windowclosing(windowevent evento){ System.exit(0); A última classe é a que define o tratador de eventos de janela da aplicação

Exemplo de fonte de aplicação que trata eventos: public class Aplicação{ public static void main(string argumentos[]){ Janela jan = new Janela(); TratEventosJan trat = new TratEventosJan(); jan.addwindowlistener(trat); jan.show(); A primeira classe é responsável por criar a janela da aplicação. class Janela extends Frame{ public Janela(){ setbackground(color.blue); add( Center, new Label( Janela da aplicação )); class TratEventosJan extends WindowAdapter{ public void windowclosing(windowevent evento){ System.exit(0); A janela é criada de acordo com a classe de janela definida!

Exemplo de fonte de aplicação que trata eventos: public class Aplicação{ public static void main(string argumentos[]){ Janela jan = new Janela(); TratEventosJan trat = new TratEventosJan(); jan.addwindowlistener(trat); jan.show(); Em seguida, é criado o objeto tratador de eventos. class Janela extends Frame{ public Janela(){ setbackground(color.blue); add( Center, new Label( Janela da aplicação )); trat (tratador de eventos) class TratEventosJan extends WindowAdapter{ public void windowclosing(windowevent evento){ System.exit(0); Ele é criado de acordo com a classe definida para tratar eventos!

Exemplo de fonte de aplicação que trata eventos: public class Aplicação{ public static void main(string argumentos[]){ Janela jan = new Janela(); TratEventosJan trat = new TratEventosJan(); jan.addwindowlistener(trat); jan.show(); Finalmente, o tratador de eventos é adicionado à janela: class Janela extends Frame{ public Janela(){ setbackground(color.blue); add( Center, new Label( Janela da aplicação )); trat (tratador de eventos) class TratEventosJan extends WindowAdapter{ public void windowclosing(windowevent evento){ System.exit(0); Podemos adicionar o listener em outros lugares Assim, todo evento de janela gerado nesta janela é capturado e tratado pelo objeto tratador de eventos.

Como e onde colocar um listener Podemos colocar um listener de 4 maneiras: A)Em uma classe externa (exemplo anterior) B)Em uma classe interna C)Em uma classe interna anônima D)Como parte da própria classe

Onde colocar um Listener B) Podemos colocar em uma classe interna public class Outer { private class Inner implements ActionListener { public void actionperformed(actionevent event) {... public Outer() { JButton mybutton = new JButton(); mybutton.addactionlistener(new Inner()); GUI em Java - parte II 19

Onde colocar um ActionListener C) Podemos colocar em uma classe interna anônima public class Outer { public Outer() { JButton mybutton = new JButton(); mybutton.addactionlistener( new ActionListener() { public void actionperformed(actionevent e) {... ); GUI em Java - parte II 20

Onde colocar um ActionListener public class GUIDemo extends JFrame implements ActionListener { protected int numcl = 0; protected JButton btnclique; protected JLabel lblnumclicks = null; public GUIDemo() { super("demonstrando eventos");initialize(); protected void initialize() { lblnumclicks = new JLabel("Num. clicks=" + numcl); btnclique = new JButton("Clique em mim!"); btnclique.addactionlistener(this); this.setlayout(new BorderLayout()); this.add(btnclique, BorderLayout.NORTH); this.add(lblnumclicks, BorderLayout.SOUTH); this.pack(); public void actionperformed(actionevent e) { numcl++; lblnumclicks.settext("num Clicks:" + numcl); D) Podemos colocá-la como parte da própria classe public class TestaGUIDemo { public static void main(string[] args) { GUIDemo gui=new GUIDemo(); gui.setsize(200, 75); gui.setdefaultcloseoperation(jframe.exit_on_close); gui.setvisible(true); GUI em Java - parte II 21

Mais componentes e seus eventos GUI em Java - parte II 22

public class Ex14_JTable extends JFrame implements ActionListener { private static final long serialversionuid = 1L; private JButton btnexcluir, btnincluir, btnmostrar; private JTextField texto; private JTable tabela; private int inccod = 0; JTable public Ex14_JTable() { settitle("tabela"); setsize(441, 300); setlocation(100, 50); Container P = getcontentpane(); P.setLayout(new BorderLayout()); tabela = new JTable(); tabela.setmodel(new DefaultTableModel(new Object[][] {, new String[] { "ID", "Nome" )); // define largura das colunas -- permite ou não, ajustar a largura tabela.getcolumnmodel().getcolumn(0).setpreferredwidth(20); tabela.getcolumnmodel().getcolumn(0).setresizable(false); tabela.getcolumnmodel().getcolumn(1).setpreferredwidth(150); tabela.getcolumnmodel().getcolumn(1).setresizable(true); JScrollPane rolagemtabela = new JScrollPane(tabela); P.add(rolagemTabela, "Center"); // criação do Painel de baixo JPanel PTabSul = new JPanel(); btnincluir = new JButton("Incluir"); PTabSul.add(btnIncluir); btnexcluir = new JButton("Excluir"); PTabSul.add(btnExcluir); btnmostrar = new JButton("Mostrar"); PTabSul.add(btnMostrar); texto = new JTextField("Nome Selecionado"); P.add(PTabSul, "South"); btnexcluir.addactionlistener(this); btnincluir.addactionlistener(this); btnmostrar.addactionlistener(this); PTabSul.add(texto); GUI em Java - parte II 23

public void actionperformed(actionevent evt) { Object origem = evt.getsource(); if (origem == btnincluir) { DefaultTableModel dtm = (DefaultTableModel) tabela.getmodel(); dtm.addrow(new Object[] { new Integer(++incCod),"Cliente " + inccod ); if (origem == btnexcluir) { int linhas[] = tabela.getselectedrows(); DefaultTableModel dtm = (DefaultTableModel) tabela.getmodel(); for (int i = (linhas.length - 1); i >= 0; i--) dtm.removerow(linhas[i]); if (origem == btnmostrar) { if (tabela.getselectedrow() >= 0) texto.settext(tabela.getvalueat(tabela.getselectedrow(), tabela.getselectedcolumn()).tostring()); public static void main(string args[]) { Ex14_JTable fr = new Ex14_JTable(); fr.setvisible(true); GUI em Java - parte II 24

JTabbedPane public class Ex15_JTabbedPane extends JFrame { public Ex15_JTabbedPane() { super("jtabbedpane Demo "); JTabbedPane tabbedpane = new JTabbedPane(); // cria JTabbedPane // configura o pane11 e o adiciona ao JTabbedPane JLabel label1 = new JLabel("panel one", SwingConstants.CENTER); JPanel panel1 = new JPanel(); // cria o primeiro painel panel1.add(label1); // adiciona o rótulo ao painel tabbedpane.addtab("tab One", null, panel1, "Primeiro Panel"); // configura panel2 e o adiciona ao JTabbedPane JLabel label2 = new JLabel("panel two", SwingConstants.CENTER); JPanel panel2 = new JPanel(); // cria o segundo panel panel2.setbackground(color.yellow); // configura fundo como amarelo panel2.add(label2); // adiciona o rótulo ao painel tabbedpane.addtab("tab Two", null, panel2, "Segundo Panel"); // configura o panel3 e o adiciona ao JTabbedPane JLabel label3 = new JLabel("panel three"); JPanel panel3 = new JPanel(); // cria o terceiro painel panel3.setlayout(new BorderLayout()); // utiliza o borderlayout panel3.add(new JButton("North"), BorderLayout.NORTH); panel3.add(new JButton("West"), BorderLayout.WEST); panel3.add(new JButton("East"), BorderLayout.EAST); panel3.add(new JButton("South"), BorderLayout.SOUTH); panel3.add(label3, BorderLayout.CENTER); tabbedpane.addtab("tab Three", null, panel3, "Terceiro Panel"); add(tabbedpane); // adiciona JTabbedPane ao frame // fim do construtor JTabbedPaneFrame public static void main(string args[]) { Ex15_JTabbedPane tabbedpaneframe = new Ex15_JTabbedPane(); tabbedpaneframe.setdefaultcloseoperation(jframe.exit_on_close); tabbedpaneframe.setsize(250, 200); // configura o tamanho do frame tabbedpaneframe.setvisible(true); // exibe o frame GUI em Java - parte II // fim do main // fim da classe JTabbedPaneFrame 25

GUI em Java - parte II 26

JSlider public class Ex16_JSlider extends JFrame { private JSlider diameterjslider; // controle deslizante p/ selecionar o diâmetro private Ex16_OvalPanel mypanel; // painel para desenhar o círculo public Ex16_JSlider() { super("slider Demo"); mypanel = new Ex16_OvalPanel(); // cria painel para desenhar o círculo mypanel.setbackground(color.yellow); // configura o fundo como amarelo // configura o JSlider para controlar o valor diâmetro diameterjslider = new JSlider(SwingConstants.HORIZONTAL, 0, 200, 10); diameterjslider.setmajortickspacing(10); //uma marca de medida a cada 10 diameterjslider.setpaintticks(true); // pinta marcas no controle // deslizante // registra o ouvinte de evento do JSlider diameterjslider.addchangelistener(new ChangeListener() //classe interna anônima { // trata da alteração de valor do controle deslizante public void statechanged(changeevent e) { mypanel.setdiameter(diameterjslider.getvalue()); System.out.println(diameterJSlider.getValue()); // fim do método statechanged // fim da classe interna anônima ); // fim da chamada para addchangelistener frame add(diameterjslider, BorderLayout.SOUTH); // adiciona o controle // deslizante ao add(mypanel, BorderLayout.CENTER); // adiciona o painel ao frame // fim do construtor SliderFrame public static void main(string args[]) { Ex16_JSlider sliderframe = new Ex16_JSlider(); sliderframe.setdefaultcloseoperation(jframe.exit_on_close); sliderframe.setsize(220, 270); // configura o tamanho do frame GUI em Java - parte II sliderframe.setvisible(true); // exibe o frame // fim da class classe SliderFrame 27

class Ex16_OvalPanel extends JPanel { private int diameter = 10; // diâmetro padrão de 10 // desenha uma oval do diâmetro especificado public void paintcomponent(graphics g) { super.paintcomponent(g); g.filloval(10, 10, diameter, diameter); // desenha um círculo // fim do método paintcomponent // valida e configura o diâmetro, então pinta novamente public void setdiameter(int newdiameter) { // se o diâmetro for inválido, assume o padrão de 10 diameter = (newdiameter >= 0? newdiameter : 10); repaint(); // pinta o painel novamente // fim do método setdiameter // utilizado pelo gerenciador de layout para determinar o tamanho preferido public Dimension getpreferredsize() { return new Dimension(200, 200); // fim do método getpreferredsize // utilizado pelo gerenciador de layout para determinar o tamanho mínimo public Dimension getminimumsize() { return getpreferredsize(); // fim do método getminimumsize // fim da classe OvalPanel GUI em Java - parte II 28

Bibliografia Algumas Figuras e/ou slides foram extraídos do material apresentado a seguir: Slides do prof Paulo Borba, Orientação a Objetos em Java, Ufpe. Slides from S.N. Kamin, D. Mickunas, E. Reingold, An Introduction to Computer Science Using Java (2nd Edition).