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

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

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

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

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

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

Aula 2 Even e to t s d o M ouse

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

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

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

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

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

Interfaces Gráficas com Swing. Professor Leonardo Larback

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

Gerenciadores de Layout

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

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

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

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

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

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

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

Desenvolvimento de Aplicações Desktop

MANIPULAÇÃO DE EVENTOS

MÓDULO 4 SWING Parte 3

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

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

Arquivos. Prof. Leonardo Barreto Campos 1

Tiago Alves de Oliveira. Tiago Alves de Oliveira

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

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

Elaborando as Interfaces Aulas 43, 44 e 45

Adding User Interaction

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

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

Aula Prática Criando Views e Controles

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

A classe JTextField

COM220 Aula 17: Interface Gráfica Containers Swing

(INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA)

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

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

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

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

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

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

Interface gráfica em Java: Swing e SWT

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Componentes Parte 01

Elaborando as Interfaces Aulas 31, 32 e 33

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

Principais Classes Swing AWT

TRATAMENTO DE EVENTOS EM JAVA USANDO SWING. George Gomes Cabral

Unidade 10: Introdução à Programação de GUIs com Swing Prof. Daniel Caetano

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

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

HABILITANDO A IDE DO ECLIPSE

Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 1- Interfaces Gráficas com Swing

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

Gerenciamento de Layout

Vector Java. Empregado.java

4 Conceito de Herança

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

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

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

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

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

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

No final deste curso, saberás criar programas através da linguagem de programação Java.

Tecnólogo em Análise e Desenvolvimento de Sistemas

Formulário Principal no NetBeans

Orientação a Objetos

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação Orientada a Objetos

LINGUAGEM DE PROGAMAÇÃO II Criando uma Classe

Prof. Msc. Vladimir Camelo

// quando o estado do Sujeito muda

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

Interfaces Gráficas: Interações Complexas

Linguagem de Programação II Implementação

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

CONTEÚDO PROGRAMÁTICO

LSD LSD PICC. Manuela Sousa

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

Gestores de Layout. Arranjo de elementos numa Janela

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

Java FX. Grupo: Alexandre Henrique Marcelo Scheidt Rafael M. Motta Ricardo C. Knoll

JMENU, JDESKTOPPANE E JINTERNALFRAME

Linguagem de Programação II Importando Classes/Pacotes

Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing

Programação Orientada a Objetos em Java. GUI Graphical User Interface

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

POO29004 Programação Orientada a Objetos

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

Transcrição:

Graphical user Interfaces Objetivos:. Construir programas com interfaces gráficas Graphical User Interface (GUI) application programs - Utilizar classes do package javax.swing - Usar um modelo de programação por eventos ( Java s delegation-based event model ) UBI, Departamento de Informática 1

Os componentes gráficos da linguagem Java estão definidos nos packages: java.awt javax.swing (surge com a versão Java2 SDK1.2) Nova plataforma: javafx UBI, Departamento de Informática 2

Alguns componentes gráficos do package javax.swing UBI, Departamento de Informática 3

Definição de uma janela (JFrame) - Um objeto do tipo JFrame contém os elementos básicos para manipularmos uma janela: abrir, fechar, mover e redimensionar - A uma janela poderemos adicionar outros componentes gráficos UBI, Departamento de Informática 4

import javax.swing.*; public class Janela { public static void main (String [] args){ JFrame janela = new JFrame(); janela.setvisible(true); } } UBI, Departamento de Informática 5

Alguns métodos da classe JFrame: - atribuir um título settitle ( My First Subclass"); -dimensionar a janela setsize ( 300, 200 ); (300 pixels de largura e 200 pixels de altura) - posicionar a janela no ponto de coordenadas (150, 250) setlocation ( 150, 250 ); - requerer que o programa termine quando a janela é fechada setdefaultcloseoperation ( EXIT_ON_CLOSE ); UBI, Departamento de Informática 6

UBI, Departamento de Informática 7

Para construir uma interface gráfica podemos definir uma subclasse de JFrame. Nessa subclasse iremos adicionar o comportamento necessário à interface gráfica que pretendemos. A classe Janela1 define uma janela com as características anteriores e com o fundo branco: UBI, Departamento de Informática 8

import javax.swing.*; import java.awt.*; public class Janela1 extends JFrame { private static final int FRAME_WIDTH = 300; private static final int FRAME_HEIGHT = 200; private static final int FRAME_X_ORIGIN = 150; private static final int FRAME_Y_ORIGIN = 250; UBI, Departamento de Informática 9

public Janela1(){ settitle ( Subclasse de JFrame com fundo branco" ); setsize (FRAME_WIDTH, FRAME_HEIGHT ); setlocation (FRAME_X_ORIGIN, FRAME_Y_ORIGIN ); setdefaultcloseoperation( EXIT_ON_CLOSE ); alterarcorfundo( ); } //continua UBI, Departamento de Informática 10

private void alterarcorfundo() { Container contentor = getcontentpane(); contentor.setbackground(color.white); } public static void main(string[] args) { Janela1 j = new Janela1(); j.setvisible(true); } }// fim da classe Janela1 UBI, Departamento de Informática 11

UBI, Departamento de Informática 12

Painel de conteúdos content pane Designa a área da janela em que se pode mostrar conteúdo como texto, imagem, etc. (i. é, toda a área, com exceção do título, da barra de menus e do bordo da janela) Para aceder ao painel de conteúdos de uma janela usamos o método: Container getcontentpane(), definido na classe JFrame O método devolve um objeto do tipo Container, classe do package java.awt UBI, Departamento de Informática 13

Adicionar botões, objetos do tipo JButton, ao painel de conteúdos de uma janela Há duas formas de adicionar objetos gráficos no painel de conteúdos de uma janela: 1 usar um objeto do tipo LayoutManager para controlar a colocação dos objetos 2 explicitar o tamanho e a posição específica onde queremos o objeto (posicionamento absoluto) UBI, Departamento de Informática 14

Para usarmos a segunda possibilidade devemos desativar o layout manager, da classe Container, invocando o o método: void setlayout(layoutmanager mgr) com o valor null contentor.setlayout(null); Para colocar o botão numa dada posição usamos o método da classe JButton: void setbounds ( x, y, width, height); UBI, Departamento de Informática 15

Container contentor = getcontentpane(); JButton botao = new JButton( Oi ); contentor.setlayout(null); botao.setbounds ( 70, 125, 80, 30 ); //Finalmente, vamos colocar o botão na janela: contentor.add( botao ); UBI, Departamento de Informática 16

Vamos agora ver como fazer o programa reagir a um click sobre o botão... UBI, Departamento de Informática 17

Programação por eventos Um evento ocorre quando o utilizador interage com um objeto gráfico:. manipular um botão com o rato;. introduzir texto num campo de texto. selecionar um item de menu.... UBI, Departamento de Informática 18

Programação por eventos... Num modelo de programação por eventos, programam-se objetos ( event listeners ) que reagem a alterações no estado de outros objetos ( event sources ). Um event listener inclui um método que será executado em resposta ao (aos) evento(s) gerado(s). UBI, Departamento de Informática 19

Para tratar um evento é necessário associar (registar) um ou vários listeners ao objeto que gera o evento. Quando um evento é gerado o sistema de execução notifica o objeto de escuta ( listener ) correspondente, invocando o método que trata o evento. Caso não exista nenhum listener registado no objecto que gera o evento, este não terá qualquer efeito. UBI, Departamento de Informática 20

Para cada tipo de evento temos um listener correspondente. Um objeto pode ser registado como um listener se for uma instância de uma classe que implementa uma determinada interface. interface ActionListener interface MouseListener interface KeyListener... UBI, Departamento de Informática 21

Exemplo: public interface ActionListener { public void actionperformed(actionevent e); } } import java.awt.event.*; public classe TrataBotao implements ActionListener { public void actionperformed ( ActionEvent e ){ //... Tratar evento } UBI, Departamento de Informática 22

Para registar um objeto ActionListener no objeto que gera o evento, usamos o método: void addactionlistener ( ActionListener ) b1 = new JButton ( "OK ); TrataBotao tb= new TrataBotao( ); b1.addactionlistener ( tb ); UBI, Departamento de Informática 23

Obs. Um único listener pode ser associado a múltiplos objetos geradores de eventos. Vários listeners podem ser associados a um único evento Suponhamos a seguinte janela com dois botões: UBI, Departamento de Informática 24

Tratar eventos Queremos que o título da janela mude consoante o botão que for pressionado. O método que vai tratar o evento terá a seguinte estrutura: public void actionperformed ( ActionEvent e ){ (1) String textodobotao = aceder ao texto do objeto que gerou o evento; } (2) JFrame janela = aceder à janela que contém o objeto gerador do evento janela.settitle ( Pressionou o botão + textodobotao ); UBI, Departamento de Informática 25

(1) Pode obter-se de duas formas: a) pelo método String getactioncommand(), da classe ActionEvent: String textodobotao = e.getactioncommand (); b) através do método Object getsource(), da classe ActionEvent: JButton botaoclicado = (JButton) e.getsource(); String textodobotao = botaoclicado.gettext(); UBI, Departamento de Informática 26

(2) Para obtermos a janela que contém o gerador do evento, é necessário:. Obter o painel que contém o objeto gerador do evento. Obter a janela que contém o painel. JRootPane rootpane = botaoclicado.getrootpane(); JFrame frame = (JFrame) rootpane.getparent(); Uma janela pode conter vários painéis encadeados. O painel de topo é o root pane UBI, Departamento de Informática 27

A própria janela pode ser o listener dos objetos gráficos que contém. public class Janela2 extends JFrame implements ActionListener { private JButton b1, b2;... public Janela2(){... Container contentor = getcontentpane(); b1 = new JButton("OK"); b2 = new JButton("Cancelar"); UBI, Departamento de Informática 28

//registar o listener em cada botão b1.addactionlistener(this); b2.addactionlistener(this); } contentor.add(b1); contentor.add(b2); //Continua UBI, Departamento de Informática 29

public void actionperformed(actionevent e){ String textodobotao; textodobotao = e.getactioncommand(); settitle("pressionou o botão " + textodobotao); } public static void main(string[] args) { Janela2 j = new Janela2(); j.setvisible(true); } } // fim da classe Janela2 UBI, Departamento de Informática 30

UBI, Departamento de Informática 31

Uma forma mais rápida de construir aplicações com interfaces gráficas é usar o NetBeans IDE's GUI builder. Use o tutorial do link abaixo para construir um pequeno exemplo: http://docs.oracle.com/javase/tutorial/uiswing/learn/index.h tml JavaFx https://docs.oracle.com/javase/8/javafx/get-startedtutorial/javafx_get_started.htm http://docs.oracle.com/javase/8/javafx/get-startedtutorial/hello_world.htm UBI, Departamento de Informática 32