JFC/Swing. Java Avançado Interface Gráfica JFC/Swing. Introdução JFC / Swing. Introdução JFC / Swing



Documentos relacionados
JFC/Swing. LPGII - Java Interface Gráfica JFC/Swing. Introdução JFC / Swing. Introdução JFC / Swing

8. Interfaces Gráficas de Usuário

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

Interface Gráficas Parte I. Bruno Crestani Calegaro

Entender princípios de projeto. Capacitação para construir GUIs. Entender os pacotes que contém componentes de GUI, e as classes e interfaces de

Pacote Java Swing Parte 1

Programação Java. Construção de Interfaces com Swing (I)

Programação Orientada a Objetos II

Interface com o Usuário (UI) UIs Desacopladas (2/3) BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos

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

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

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

Curso de Aprendizado Industrial Desenvolvedor WEB

API Swing Java. 1. Introdução. 2. Objetivos. 3. Surgimento do Swing. André Scarmagnani 1, Matheus Madalozzo 1, Miguel Diogenes Matrakas 1

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

Linguagem Java - Prof. Luciana Porcher Nedel 1. Um container genérico e visual. Ela trabalha em cooperação com o controle de layouts.

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

Programação de Interfaces Gráficas. Aula 1. Carlos Eduardo de Carvalho Dantas

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

JCheckbox JRadioButton JComboBox JList JMenu... Alguns componentes já vistos em aula JButton JLabel JTextField

Interface Gráfica. Prof. Marcelo Cohen

Técnicas de Programação II

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Interfaces Gráficas (GUIs) em Java usando Swing

Programação Orientada a Objetos II

Construção de Interfaces Gráficas

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

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

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

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos

MÓDULO 4 SWING Parte 3

JTABLE STUDENT CONTROL JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto

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

Programação Orientada a Objetos

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

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

Desenvolvimento de Aplicações Desktop

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

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

JAVA. Marcio de Carvalho Victorino. Interface Gráfica em Java (GUI)

Criação de telas com Swing

Interface Gráfica. Prof. Marcelo Cohen. (material da Profa. Luciana Nedel) Graphical User Interface (GUI)

Curso Java Starter. 1

Sumário Introdução à 3a. Edição Introdução Dia 1 - Conceitos Iniciais Dia 2 - Bem-vindo ao Mundo Real... 43

JFrame. JLabel : Utilizado como rótulo para exibição de texto e ícones. Interface Gráfica de JAVA - Graphical User Interface (GUI)

Criação de Applets Package: Class Name Base Class: Generate header comments: Can run standalone: Generate Standard methods:

Construção de Interfaces Gráficas - Introdução

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

Java First-Tier: Aplicações. Abstract Window Toolkit (AWT) Construção de Interfaces com Swing (I) Swing: Características

Capítulo 12 Eventos de interacção

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

Programação por Objectos. Interfaces gráficas. Swing 1/52

Sistema de Recursos Humanos

Gerenciadores de Layouts

Programação Visual em Java

Programação Gráfica em Java.

Interface Gráfica Swing. Leonardo Gresta Paulino Murta

Desenvolvendo aplicações

Interfaces Gráficas. Componentes Gráficos Gestores de Posicionamento Manipuladores de Eventos. (Livro Big Java, Late Objects Capítulos 10 e 11)

Como usar a documentaçã

Fundamentos de GUIs. João Carlos Pinheiro. Última Atualização Junho / 2004 Versão: 3.0

Exercícios 07 Introdução à POO (Interface Gráfica)

O programa abaixo exemplifica o uso da classe Image para carregar e mostrar uma imagem localizada em um arquivo.

Como construir aplicaçõ e applets

Gerenciadores de Layout Parte 1

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

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

Introdução à Tecnologia Java 02/2012. Java Aula 04 MDI. 05/09/2012 Celso Olivete Júnior.

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

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Curso de Java Módulo II Swing Fábio Mengue Centro de Computação - Unicamp

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

Interfaces Gráficas: Interações Complexas

Manual. Atualização nº 1160 Novembro/ /11/2015

JAVA APLICAÇÕES GRÁFICAS Propriedade Utilizada: FontSizeAnimation

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

1 Criando um aplicativo visual em Java

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

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

UNIPAC-TO POOII. Java NetBeans. Aplicações visuais e componentes. Giovanni Camargo Silva giovanni@unipato.com.br

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

Roteiro para criação de Applet

Componentes Parte 03

Interface Gráfica. LPG II Java Interface Gráfica AWT. Introdução. AWT - Abstract Window Toolkit

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

Adicionando Caixas de Verificação no seu Programa Java

ALBUM DE FOTOGRAFIAS NO POWER POINT

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico

Word 1 - Introdução Principais recursos do word A janela de documento Tela principal

Capítulo 29. Menus. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

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

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

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA. 2.1 Criando Mapas no Excel. 2.2 Utilizando o Mapa

PERES JULIAO CORGOSINHO BRUNO BORGES LEMOS DE OLIVEIRA RAFAEL REIS GOMES

Exemplo25 Leitura de dados de arquivos txt. Passos para a elaboração da aplicação:

Transcrição:

JFC/Swing Java Avançado Interface Gráfica JFC/Swing Roberto Vedoato vedoato@joinville.udesc.br Introdução Organização das Aplicações Containers Swing Hierarquia de Componentes Swing Componentes Swing Look-and-Feel Dicas de Ferramentas Mnemônicos de Teclado Caixas de Diálogo Padrão Gerenciadores de Leiaute JFC/Swing 2 Introdução JFC / Swing Introdução JFC / Swing JFC (Java Foundation Classes) é um conjunto capacidades gráficas que facilitam a criação de melhores interfaces em Java Swing é o nome dado à coleção de componentes Swing substitui totalmente componentes AWT. Há componentes Swing correspondentes a cada um dos componentes AWT Componentes Swing são implementados inteiramente em Java AWT era implementada com métodos nativos Características Adição de novos componentes Suporte a Look-and-Feel plugável Recursos de acessibilidade API Java 2D Internacionalização Suporte a drag & drop, cut & paste, undo/redo Mantém e estende a interface de eventos e leiaute É preciso importar java.awt e javax.swing para usar JFC Evite misturar componentes AWT e Swing JFC/Swing 3 JFC/Swing 4

Construindo uma Aplicação Swing Construindo uma Aplicação Swing Importar pacote Swing e awt import javax.swing.*; import java.awt.*; Usar um container de alto nível JFrame frame = new JFrame(); Adicionar componentes ao container intermediário JLabel label = new JLabel( Texto ); getcontentpane().add(label); Redimensionar janela automaticamente para o tamanho e layout dos seus componentes pack(); Tornar janela visível: setvisible(true); import javax.swing.*; import java.awt.*; public class HelloWorldSwing { public static void main(string[] args) { JFrame frame = new JFrame("HelloWorldSwing"); JPanel pane = new JPanel(); JLabel label = new JLabel("Hello World"); pane.add(label); frame.setcontentpane(pane); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.setvisible(true); } } Ver http://java.sun.com/docs/books/tutorial/uiswing/learn/example1.html JFC/Swing 5 JFC/Swing 6 Organização de aplicações JFC Organização de aplicações JFC Aplicações JFC exigem 3 tipos de componentes Container de alto-nível Provê um lugar para alocar outros componentes Swing Exemplo: JFrame Container intermediário, chamado de painel de conteúdo Onde adicionamos outros containers e componentes Exemplo: JPanel Componente atômico Componente que geralmente implementa algum evento Exemplo: JButton Assim, toda aplicação JFC é uma hierarquia de containers O painel de conteúdo (contentpane) é uma área independente de plataforma que cobre a área útil do JFrame Pode ser manipulado por um objeto da classe Container Container p = getcontentpane(); Podemos especificar o painel de conteúdo JPanel pane = new JPanel(); setcontentpane(pane); Uma vez definido o painel de conteúdo métodos como setlayout (LayoutManager) e add(component) são chamados a partir do painel de conteúdo e não do container de alto nível Recomenda-se que todos componentes atômicos, exceto menus, sejam inseridos em containers intermediários JFC/Swing 7 JFC/Swing 8

Organização de aplicações JFC Containers Swing Containers de Alto nível JApplet JDialog JFrame Containers Intermediários JPanel JScroolPane JSplitPane JTabbedPane JToolBar JMenuBar Containers de Propósito Especial InternalFrame LayeredPane RootPane JFC/Swing 9 JFC/Swing 10 Container de Alto Nível - JFrame Container de Alto Nível - JFrame Um JFrame contém um JRootPane como seu único filho JRootpane é composto de um glasspane, um menubar opcional e um contentpane O glasspane fica sobre todos para interceptar movimentos de mouse O contentpane provido pelo JRootPane contém todos componentes, exceto componentes menu, do JFrame Diferentemente de um Frame AWT, um JFrame tem alguma noção de como responder quando o usuário tenta fechá-lo. O comportamento padrão é escondê-lo. Para alterar o comportamento padrão utilize o método setdefaultcloseoperation(int) Estrutura do JRootPane o qual JFrame contém para gerenciar o contentpane, o menubar assim como o glasspane JFC/Swing 11 JFC/Swing 12

Container de Alto Nível - JFrame Hierarquia de Componentes Swing Exceto containers de alto-nível, todos componentes Swing que começam com a letra J são derivados de javax.swing.jcomponent, que é uma extensão de java.awt.container que por sua vez estende java.awt.component JFC/Swing 13 JFC/Swing 14 Componentes Swing JLabel Alguns dos componentes Swing JButton, JRadioButton, ButtonGroup, JCheckBox JComboBox, JList JLabel, JSlider, JProgressBar JTextField, JTextArea, JPasswordField JScrollPane, JSplitPane, JTabbedPane JToolBar JTree, JTable JColorChooser, JFileChooser JMenuBar, Jmenu, JMenuItem, JCheckBoxMenuItem, JRadioButtonMenuItem inclusão de ícones alinhamento individual JLabel(String, int) // rótulo de texto, alinhamento Alinhamento: JLabel.{LEFT, CENTER, RIGHT}) JLabel(String, Icon, int) Icone na forma: ImageIcon icone = new ImageIcon("nomeIcone.gif"); JLabel titulo = new JLabel("titulo",icone,JLabel.LEFT); JFC/Swing 15 JFC/Swing 16

JButton JTextField inclusão de ícones JButton(String) JButton(Icon) JButton(String, Icon) método setechochar(char) não é mais suportado, para tal comportamento tem-se o novo componente JPasswordField JTextField(int) JTextField(String,int) // texto, largura JFC/Swing 17 JFC/Swing 18 JCheckBox JRadioButton inclusão de ícones JCheckBox(String) JCheckBox(Icon) JCheckBox(String, boolean) JCheckBox(Icon, boolean) JCheckBox(String, Icon) JCheckBox(String, Icon, boolean) necessidade de declarar a classe ButtonGroup para que apenas um componente possa ser selecionado de cada vez ButtonGroup group = new ButtonGroup(); group.add(birdbutton); classe CheckboxGroup não é mais utilizada JRadioButton(String) JRadioButton(Icon) JRadioButton(String, boolean) JRadioButton(Icon, boolean) JRadioButton(String, Icon) JRadioButton(String, Icon, boolean) JFC/Swing 19 JFC/Swing 20

JComboBox novo nome para classe Choice JComboBox() sem argumento Métodos additem(object) adiciona item à lista seteditable(boolean) false para transformar em lista de escolha e true para transformar em lista com inclusão permitida Look and Feel Um look-and-feel plugável pode ser especificado pelo programador ou selecionado pelo usuário em tempo de execução Classe UIManager possui o método setlookandfeel(lookandfeel) que permite escolher aparência e comportamento de uma aplicação GUI Ver http://java.sun.com/docs/books/tutorial/uiswing/learn/example2.html JFC/Swing 21 JFC/Swing 22 Exemplo de Look and Feel Look and Feel try{ UIManager.setLookAndFeel( "javax.swing.plaf.metal.metallookandfeel"); //UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName()); } catch(exception e){ System.out.println("Não pode usar look feel + e);} Argumentos para o método setlookandfeel: UIManager.getCrossPlatformLookAndFeelClassName() Returns the look and feel that works on all platforms the Java look and feel. UIManager.getSystemLookAndFeelClassName() Specifies the look and feel for the current platform. On Microsoft Windows platforms, this specifies the Windows look and feel. On Mac OS platforms, this specifies the Mac OS look and feel. On other Unix platforms, such as Solaris or Linux, this returns the CDE/Motif look and feel. "com.sun.java.swing.plaf.gtk.gtklookandfeel" Specifies the GTK+ look and feel. "javax.swing.plaf.metal.metallookandfeel" Specifies the Java look and feel. (The codename for this look and feel was Metal.) "com.sun.java.swing.plaf.windows.windowslookandfeel" Specifies the Windows look and feel. Currently, you can use this look and feel only on Microsoft Windows systems. "com.sun.java.swing.plaf.motif.motiflookandfeel" Specifies the CDE/Motif look and feel. This look and feel can be used on any platform. JFC/Swing 23 JFC/Swing 24

Dicas de Ferramentas Mnemônicos de Teclado Legendas textuais que aparecem quando o mouse permanece por alguns segundos sobre um componente Tem o tamanho máximo de uma linha Método settooltiptext(string) do componente JTextField cpf = new JTextField(); cpf.settooltiptext( Entre com o CPF sem hífen"); Sequência de teclas que permite usar uma aplicação Java com o teclado Modo de usar mnemônico varia com a plataforma Windows é tecla ALT Método setmenmonic(char) do componente JButton botao = new JButton( Ajuda"); botao.setmnemonic( a'); Pressionar (ALT + a) aciona o componente JFC/Swing 25 JFC/Swing 26 Caixas de Diálogo Padrão Gerenciadores de Leiaute A classe JOptionPane oferece métodos que criam caixas de diálogo padrão showconfirmdialog Caixa de Diálogo do tipo Yes/No/Cancel showinputdialog Caixa de Diálogo do tipo entrada de dados com campo texto showmessagedialog Caixa de Diálogo do tipo mensagem showoptiondialog Caixa de Diálogo do tipo opção que combina recursos das anteriores Podem ser modais (bloquear o programa até ser fechada pelo usuário), via construtor ou método setmodal() Java oferece um esquema simplificado mas muito versátil para controlar o tamanho e a posição de componentes nos containers Há duas formas de acrescentar componentes em um container Usar um Gerenciador de Leiaute (layout manager) para dimensionar e posicionar os componentes (esta é a maneira recomendada e padrão) Desligar o layout manager, posicionar e redimensionar os componentes diretamente (pixels) Ver http://java.sun.com/docs/books/tutorial/uiswing/learn/example6.html JFC/Swing 27 JFC/Swing 28

Gerenciadores de Leiaute FlowLayout Todo container tem um algoritmo de leiaute padrão Método setlayout() define o Gerenciador de Leiaute a ser utilizado FlowLayout BorderLayout GridLayout GridBagLayout CardLayout Null para desligar os layout managers Os componentes são arranjados por linhas, da esquerda para direita na ordem em que são adicionados Exemplo setlayout(new FlowLayout()); JFC/Swing 29 JFC/Swing 30 GridLayout BorderLayout Os componentes são arranjados numa grade retangular onde todas as células possuem o mesmo tamanho de forma que toda a área do container seja ocupada O número de linhas e colunas pode ser especificado, Exemplo setlayout(new GridLayout(2, 2)); Os componentes são arranjados pelos pontos cardeais mais o centro Cada região só pode ser ocupada por um único componente Os componentes são redimensionados de forma a ocuparem toda a região onde foram inseridos JFC/Swing 31 JFC/Swing 32

Combinação de Leiautes Combinação de Leiautes Através de containers intermediários podemos combinar leiautes, adicionando no painel de conteúdo painéis com diferentes leiautes Os componentes de cada painel são tratados como um conjunto Tem-se assim interfaces com leiautes sofisticados Ver http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html Novos algoritmos de layout podem ser criados implementando interface LayoutManager (e LayoutManager2) É impossível controlar tamanho e posição de componentes se um LayoutManager estiver sob controle Para flexibilizar regras de posicionamento, configure o LayoutManager usado através de seus construtores e métodos Para flexibilizar regras de dimensionamento, altere o preferredsize dos componentes Tamanhos preferidos dos componentes setpreferredsize(), disponível em alguns componentes, permite definir o seu tamanho ideal getpreferredsize(), disponível em todos os componentes pode ser sobreposto em subclasses e será chamado pelos Layout Managers que o respeitam (Flow, Border) JFC/Swing 33 JFC/Swing 34 AWT Thread java.awt.graphics Thread que é responsável pela atualização do contexto gráfico Chama update() (método de Component) e passa referência para o contexto gráfico como argumento sempre que for necessário redesenhá-lo. Método update(graphics g) 1. Limpa a área a ser redesenhada (contexto gráfico) 2. Chama paint(g) Métodos update() e paint() nunca devem ser chamados diretamente a partir do thread principal Use repaint(), que faz o agendamento de uma chamada a update() através do AWT thread Sobreponha update() se desejar Representa o contexto gráfico de cada componente Passado pelo sistema quando chama update() Programador pode desenhar no componente usando referência recebida via paint() ao sobrepor o método: public void paint(graphics g) { Graphics2D g2 = (Graphics2D) g; Shape s = new Ellipse2D.Double(); g2.setcolor(color.red); g2.draw(s); } Para definir o que será desenhado em determinado componente, sobreponha seu método paint() Use Graphics2D! Mais recursos! JFC/Swing 35 JFC/Swing 36

Exercício Exercício Interface Sugerida Elabore uma aplicação que simule o cadastro de uma pessoa (cpf, nome, telefone e e-mail). Observe que para tal, teremos a classe Pessoa e duas classes gráficas, Cadastro e Relatório. Para o cadastro do sexo deve ser utilizada uma caixa de escolha (objeto da classe JComboBox). No cadastro deve haver um botão que automaticamente exibe, em uma nova janela, um relatório com os dados digitados pelo usuário. No entanto, caso algum elemento tenha sido deixado em branco, uma mensagem deve ser exibida e a nova janela não poderá ser exibida. Pede-se também que após a janela de resultado ser exibida todos os campos sejam limpos para o cadastro de um novo usuário. JFC/Swing 37 JFC/Swing 38