Interfaces Gráficas (GUIs) em Java usando Swing

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

Interface Gráficas Parte I. Bruno Crestani Calegaro

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

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

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

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

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

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

Pacote Java Swing Parte 1

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

8. Interfaces Gráficas de Usuário

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

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

Curso Java Starter. 1

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

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

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

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

Interfaces Gráficas (GUIs) em Java usando Swing

Desenvolvimento de Aplicações Desktop

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

Técnicas de Programação II

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

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

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

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

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

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

Marcelo Henrique dos Santos

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

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

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

JAVA. Gerenciadores de Layout. Tiago Alves de Oliveira

Programação Orientada a Objetos II

Linguagem de Programação Visual

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

Construção de Interfaces Gráficas

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

Interfaces Gráficas (GUIs) em Java usando Swing

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

Curso de Aprendizado Industrial Desenvolvedor WEB

Interface Gráfica - Swing

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

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

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

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

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

JMENU, JDESKTOPPANE E JINTERNALFRAME

HABILITANDO A IDE DO ECLIPSE

Capítulo 23. às s Interfaces Gráficas. Introdução. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Componentes no Java SE

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

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

Orientação a Objetos

MÓDULO 4 SWING Parte 3

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

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Interface Gráfica. Prof. Marcelo Cohen

Criando um aplicação simples com JAVA e MySQL usando NetBeans Parte II

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

Capítulo 12 Eventos de interacção

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

Linguagem de programação 2 GUI

Unidade 11: Programando Swing com o NetBeans Prof. Daniel Caetano

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

Entrada e Saída de dados por JOptionPane

Programação Orientada a Objetos

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

package br.com.cadastro.visao;

Objetivos do Capítulo

CONTEÚDO PROGRAMÁTICO

Interface Gráfica. GUI (Graphic User Interface) AWT e Swing Containers e componentes Layouts. Linguagem Java - Prof. Luciana Porcher Nedel 1

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

Linguagem de Programação Java II Aula 2. Prof. Me. Alexandre Rômolo Moreira Feitosa

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 3- Desenvolvendo Interfaces Mais Ricas

Interface gráfica em Java: Swing e SWT

Cadastro de Cargos, Departamentos e Funcionários

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

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

Is Event Dispatcher Threade (Animation)

Introdução a programação gráfica em Java com Swing

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

JTextArea JMenuBar JTable JDesktopPane e JInternalFrame

Java Swing: Netbeans

Módulo 1. Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

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

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

Além de digitar e rodar os exemplos para ver seu funcionamento, deve-se ler atentamente e entender o que cada linha do código está fazendo.

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

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

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

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: insira as propriedades escolhidas aqui FACULDADE DE TECNOLOGIA SENAC PELOTAS

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

Centro Federal de Educação Tecnológica do Amazonas. Java Avançado Prof. Tiago Eugenio de Melo

Aula 3 Componentes de Interface Gráfica

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

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

Transcrição:

Interfaces Gráficas (GUIs) em Java usando Swing Profa. Flávia Cristina Bernardini * Baseado em slides de Ricardo Linden, João Bosco Sobral e Samuel Cristhian Schwebel

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.

Interfaces Mais Simples Nós usamos javax.swing.joptionpane Não é muito OO! Nem muito poderoso...

Elementos de uma GUI componentes: Elementos desenhados na tela. Exemplos: botão, textbox, label, etc. containers: elementos que servem como agrupadores lógicos para componentes. Exemplo: Panel. Containers de alto nível: cidadãos de primeira classe, que efetivamente ocupam um espaço no desktop. Exemplos: Frame, DialogBox.

GUI em Java: AWT e Swing Idéia inicial da Sun: Abstract Windowing Toolkit AWT Criar um conjunto de classes e métodos que possam ser usados para escrever uma GUI multi-plataforma Não era poderosa o suficiente, sendo extremamente limitada. Segunda edição (JDK v1.2): Swing Nova biblioteca, construída do zero que permite gráficos e GUIs muito mais poderosos e flexíveis. Por compatibilidade retroativa, ambos existem no Java e, às vezes, nós usamos os dois...

Swing Porque o nome swing? Apelido usado pelos desenvolvedores das Java Foundations Classes (JFC) usadas para o desenvolvimento do GUI Vem do ícone que era usado em uma release inicial. Porque swing e não awt? awt é a versão mais velha e mais primitiva. Swing é mais poderosa Swing pode ser enviado com as aplicações, sendo não dependente de máquina

Look and Feel Cada figuta abaixo mostra o mesmo programa com um look and feel diferente. Conforme mudamos de SO ou de ambiente, o look and feel se adapta para aquele que é padrão na máquina onde rodamos. Isto é uma obrigação da JVM, não do programador.

Componentes Swing O Swing fornece vários componentes padrão de GUI que podem ser combinados de forma a criar sua interface. Alguns exemplos: Botões, Listas, Menus, Áreas de texto, etc. Swing também fornece containers tais como janelas e barras de ferramentas. Pode ser de vários níveis: Nível mais alto: frames, diálogos Nível Intermediário: panel, scroll pane, tabbed pane,...

Hierarquia de Componentes Swing java.lang.object +--java.awt.component +--java.awt.container +--javax.swing.jcomponent +--javax.swing.jbutton +--javax.swing.jlabel +--javax.swing.jmenubar +--javax.swing.joptionpane +--javax.swing.jpanel +--javax.swing.jtextfield +--java.awt.window +--java.awt.frame +--javax.swing.jframe

Métodos comuns em todos os componentes Swing get/setpreferredsize get/setsize get/setlocation getlength/width repaint setbackground(color) setfont(font) isenabled / setenabled(boolean) isvisible / setvisible(boolean)

Containers Descendentes da classe java.awt.container Componentes que podem conter outros componentes. Usamos um layout manager para posicionar e definir o tamanho dos componentes contidos neles. Componentes são adicionados a um container usando as várias formas do método add

Containers Top-Level Todo programa que usa uma GUI Swing tem pelo menos um container de alto nível (top-level). Um container top-level provê o suporte que os componenetes siwng necessitam para realizar o desenho da tela e o tratamento de eventos. O Swing fornece três containers top-level : JFrame (Janela principal) JDialog (Janela secundária) JApplet (Um applet mostra uma área desenhada dentro de um navegador internet)

Containers Top-Level Para aparecer na tela, todo componente GUI deve ser parte de uma hierarquia de contenção, cuja raiz é um container top-level. Todo container top-level tem um content pane que contém todos os componentes visíveis dentro da interface daquele container top-level. Não adicione o componente diretamente ao container top-level

Content Pane Todo container top-level contém indiretamente um container intermediário denominado content pane Este content pane contém todos os componentes visíveis n GUI da janela. Os containers são adicionados ao content pane usando um dos vários tipos de métodos add Exemplo: frame = new JFrame(...); label = new JLabel(...); frame.getcontentpane().add(label, BorderLayout.CENTER);

JFrame Um frame, implementado como uma instância da classe JFrame, é uma janela que tem acessórios tais como borda, título e botões para fechar e minimizá-la. Estes acessórios são totalmente dependentes de plataforma. As aplicações com uma GUI tipicamente usam ao menos um frame.

JFrame Métodos principais public void settitle(string title): Coloca um título na barra de título da janela. public void show(): Faz o frame aparecer na tela. public void setvisible(boolean v): Faz com que o frame se torne visível (v=true) ou não (v=false). public void setdefaultcloseoperation(int op) : Faz a janela realizar uma determinada operação quando fecha. Mais comum: JFrame.EXIT_ON_CLOSE

JFrame A programação gráfica está muito ligada à ocorrência de eventos, que devem ser tratados Ao contrário de outras linguagens de programação, os containers Java não vêm 100% para lidar com os eventos básicos que ocorrem em uma janela. Um exemplo é o evento de fechamento. Qualquer aplicativo Delphi ou VB sabe fechar sua janela sem problema, mas Java não. Mais à frente nós vamos aprender mais sobre eventos, então vamos nos contentar com o setdefaultcloseoperation por enquanto

Primeiro programa GUI em Java import javax.swing.*; public class HelloWorldSwing { public static void main(string[] args) { } } JFrame frame = new JFrame("HelloWorldSwing"); final JLabel label = new JLabel("Hello World"); frame.getcontentpane().add(label); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.setvisible(true); pack() faz com que a janela seja ajustada para o tamanho preferido de todos os seus subcomponentes.

Exemplo 2 import javax.swing.*; public class HelloWorldFrame extends JFrame { public HelloWorldFrame() { } } super( HelloWorldSwing ); final JLabel label = new JLabel("Hello World"); getcontentpane().add(label); setdefaultcloseoperation(jframe.exit_on_close); pack(); setvisible(true); public static void main(string[] args) { } Faz a mesma coisa, só que criando uma classe nova, definida por nós. HelloWorldFrame frame = new HelloWorldFrame();

Relacionamentos conceituais Diagrama UML

Superclasses comuns da maioria dos componentes Swing java.lang.object java.awt.component java. awt.cont ainer javax.swi ng.jcom ponent

JDialog Um diálogo é uma maneira de conseguir com que o usuário realize uma entrada de dados. Existem vários tipos de diálogos - nós já usamos um há muito tempo... Todo diálogo é dependente de um frame. Destruir um frame destrói todos os diálogos que são seus dependentes Quando um frame é minimizado, somem da tela todos os seus diálogos Eles voltam quando o frame volta ao seu tamanho normal Um diálogo pode ser modal. Quando um diálogo modal está visível, todas as entradas para outros componentes estarão bloqueadas.

JDialog Para criar diálogos customizados, use a classe JDialog diretamente. O Swing provê vários diálogos padrões: JProgressBar, JFileChooser, JColorChooser,... A classe JOptionPane pode ser usada para criar diálogos modais simples, que permitem a costumização de ícones, títulos, textos e botões

Usando JOptionPane JOptionPane faz com que seja fácil exibir um diálogo padrão que leia um valor do usuário ou informe-o de algo. A classe JOptionPane parecer complexa dado o seu grande número de métodos. Entretanto, a maioria dos uso desta classe são simplesmente chamadas de uma única linha para um dos métodos estáticos showxxxdialog

showxxxdialog showconfirmdialog Faz uma pergunta confirmatória e espera uma resposta tal como yes/no/cancel. showinputdialog Lê entrada do teclado (velho conhecido) showmessagedialog Informa ao usuário que algo aconteceu. showoptiondialog Os três anteriores em um só Todos os diálogos acima são modais.

Usando JOptionPane: Exemplo Object[] options = { Sim!", "Não", Quem sabe?"}; int n = JOptionPane.showOptionDialog( frame, Tem certeza? Confirmação", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[2]);

Container Um container é um objeto que armazena componentes, governando suas posições, tamanhos e comportamentos quando o usuário altera seu tamanho. Principais métodos: public void add(component comp) public void add(component comp, Object O): adiciona um componente usando informações adicionais (veremos mais adiante). public void remove(component comp) public void setlayout(layoutmanager mgr): Usa o layout manager especificado para posicionar os componentes no container. public void validate(): Manda o layout manager reposicionar todos os objetos no container.

JComponent Classe base para todos os componentes Swing, com exceção dos containers top-level Para usar um componente que herde de JComponent, ele deve ser colocado na hierarquia de contenção cuja raiz seja um container top-level A classe JComponent provê, entre outros, tratamento de eventos de teclado, look and feel, infra-estrutura para desenho, suporte a bordas, etc Todos os descendentes de JComponent também são Containers. Exemplo: um JButton pode conter textos, ícones, etc

JComponent Componentes típicos JLabel JButton JTextField JPanel JTable Etc.

JButton Um botão é uma região clicável com a qual o usuário interage de forma a realizar um comando. Principais métodos: public JButton(String text): Cria um novo botão com o texto dado como parâmetro definido como texto de face. public String gettext():retorna o texto mostrado no botão. public void settext(string text): Muda o texto de face do botão.

JButton Apesar de termos criado um botão, ele ainda não faz nada. Mesmo clicando nele, nada ocorre Isto ocorre porque nós não associamos nenhum tratador de evento a este botão Tratamento de eventos: veremos adiante

JLabel Um label é um texto a ser mostrado na tela que normalmente oferece informação para o usuário de forma a tornar a interface mais compreensível. Principais métodos: public JLabel(String text): Cria um novo label com o texto dado como parâmetro definido como texto de face. public String gettext():retorna o texto mostrado no label. public void settext(string text): Muda o texto de face do label.

JTextField Um textfield é como um label, só que pode ser editado e modificado pelo usuário. Textfields são usados geralmente para entrada de dados pelo usuário. Métodos interessantes: public JTextField(int columns): Cria um novo textfield com uma largura, em caracteres, dada pelo parâmetro. public String gettext(): Retorna o texto atualmente armazenado no campo. public void settext(string text): Modifica o texto do campo para ser igual à string dada como parâmetro.

JCheckBox Objeto de tela que permite que escolhamos entre duas opções (marcado e não marcado) Métodos interessantes: public JCheckBox(String text): Cria uma checkbox cujo texto é dado pelo parâmetro e cujo valor default é não marcada public JCheckBox(String text, boolean ischecked) Cria uma checkbox cujo texto é dado pelo primeiro parâmetro e cujo valor default é dado pelo segundo parâmetro. public boolean isselected():retorna true se a check box foi selecionada. public void setselected(boolean selected): Muda o estado da checkbox de acordo com o parâmetro passado.

JRadioButton Um botão que pode ser selecionado. Normalmente é parte de um grupo de botões mutuamente exclusivos (isto é, apenas um pode ser selecionado de cada vez) Métodos interessantes public JRadioButton(String text) public JRadioButton(String text, Icon icon) public boolean isselected() public void setselected(boolean b)

ButtonGroup Um grupo lógico de radiobuttons que garante que apenas um deles pode ser selecionado de cada vez. Métodos interessantes: public ButtonGroup() public void add(abstractbutton b) O objeto da classe ButtonGroup não é um objeto gráfico, apenas um grupo lógico. Os objetos da classe RadioButton é que são adicionados ao container

Usando Icon Nas classes JButton, JRadioButton, JCheckBox, JLabel, etc, temos o seguinte. O construtor pode receber um ícone public void seticon(icon) public void setselectedicon(icon) public void setrollovericon(icon)

JTextArea Uma área de texto multi-linha Útil para escrever textos longos que não necessitam formatação. Métodos interessantes: public JTextArea(int rows, int columns): Cria um novo campo de texto com um tamanho determinado em termos de número de linhas e colunas public String gettext():retorna o texto armazenado no momento na área. public void settext(string text):define o texto a ser armazenado na área como sendo o parâmetro passado.

Problema: Posicionando componentes Como o programador pode especificar onde fica cada componente na janela, quão grande ele deve ser e o que ele deve fazer quando a janela muda de tamanho? Em C++, Delphi e outros: usar posicionamento absoluto. O programador especifica as coordenadas de cada componente. Em Java : usamos os gerenciadores de formato (Layout Managers). São objetos especiais que decidem onde posicionar cada componente baseados em critérios específicos.

Bordas Todo JComponent pode ter uma ou mais bordas A classe usada para criar bordas padronizadas é a BorderFactory Exemplo de uso: p.setborder(borderfactory.createlineborder(color.black)); Podemos criar uma borda composta, combinando uma ou mais bordas, da seguinte maneira: BorderFactory.createCompoundBorder(border1, border2);

Classe BorderFactory Hierarquia java.lang.object javax.swing.borderfactory Servem para implementar bordas padronizadas. Use métodos estáticos que retornam elementos da classe Border: createbevelborder createetchedborder createtitledborder createemptyborder createlineborder etc.

Tipos de bordas

Containers de nível intermediário Também conhecidos como panels ou panes Simplificam o posicionamento de outros componentes, como no caso do JPanel Têm um papel visível e interativo na GUI do programa, como no caso do JScrollPane e do JTabbedPane. Possuem um gerenciador de layout padrão, que é o FlowLayout. Este gerenciador pode ser modificado com o comando: panel.setlayout(new BorderLayout());

Containers de nível intermediário Por default, os panels não pintam nada, exceto o seu fundo (background). Por default, eles são opacos. Um panel opaco pode ser definido como o content pane de um container de top-level. Panels opacos não desenham um background.

JPanel Um panel é um container que podemos usar (além do JFrame) Principais métodos: public JPanel(): Cria um JPanel com o layour manager padrão public JPanel(LayoutManager mgr): Cria um Jpanel com o layour manager especificado. Um JPanel pode depois ser acrescentado em um Jframe para melhorar o layout de nossas telas.

Resumo JFrame = É um contêiner (formulário) para outros componentes GUI. JLabel = Área em que podem ser exibidos textos nãoeditáveis 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ãoselecionado. JComboBox = Lista de itens que o usuário pode fazer uma seleção clicando em um item na lista ou digitando na caixa. 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.

Alguns Componentes GUI Básicos JLabel JTextField JButton JCheckBox JComboBox JList JFrame