Componentes GUI: Parte 1

Tamanho: px
Começar a partir da página:

Download "Componentes GUI: Parte 1"

Transcrição

1 1 11 Componentes GUI: Parte 1 OBJETIVOS Neste capítulo, você aprenderá: Os princípios do projeto de interfaces gráficas com o usuário (graphical user interfaces GUIs). Como construir GUIs e tratar eventos gerados por interações de usuário com GUIs. Como entender os pacotes que contêm componentes GUI, interfaces e classes de tratamento de evento. Como criar e manipular botões, rótulos, listas, campos de texto e painéis. Como tratar eventos de mouse e eventos de teclado. Como utilizar gerenciadores de layout para organizar componentes GUI. 2 1

2 Introdução 11.2 Entrada/saída baseada em GUI simples com JOptionPane 11.3 Visão geral de componentes Swing 11.4 Exibição de texto e imagens em uma janela 11.5 Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas 11.6 Tipos comuns de eventos GUI e interfaces ouvintes 11.7 Como o tratamento de evento funciona 11.8 JButton 11.9 Botões que mantêm o estado JCheckBox JRadioButton JComboBox e utilização de uma classe interna anônima para tratamento de eventos JList Listas de seleção múltipla Tratamento de evento de mouse Classes adaptadoras Subclasse JPanel para desenhar com o mouse Tratamento de eventos de teclado Gerenciadores de layout FlowLayout BorderLayout GridLayout Utilizando painéis para gerenciar layouts mais complexos JTextArea Conclusão 2

3 11.1 Introdução 5 Interface Gráfica com o Usuário (Graphical User Interface GUI): Apresenta um mecanismo amigável ao usuário para interagir com uma aplicação; Sendo consistente permite que o usuário se familiarize mais rapidamente com ela e portanto possa utiliza-la mais produtivamente; Frequentemente contém barra de título, barra de menus que contém menus, botões e caixas de combinação; É construída a partir de componentes GUI. 6 Observação sobre aparência e comportamento 11.1 Interfaces com o usuário consistentes permitem que o usuário aprenda mais rápido novos aplicativos. 3

4 7 botão menus barra de título barra de menus caixa de combinação barras de rolagem Figura 11.1 Janela do Internet Explorer com componentes GUI Entrada/saída baseada em GUI simples comjoptionpane Caixas de diálogo: Utilizadas pelas aplicações para interagir com o usuário. Fornecidas pela classe JOptionPane do Java (pacote javax.swing). Contém diálogos de entrada e diálogos de mensagem. 8 4

5 1 // Fig. 11.2: Addition.java 2 // Programa de adição que utiliza JOptionPane para entrada e saída. 3 import javax.swing.joptionpane; // programa utiliza JOptionPane 4 5 public class Addition 6 { 7 public static void main( String args[] ) 8 { 9 // obtém a entrada de usuário a partir dos diálogos de entrada JOptionPane 10 String firstnumber = 11 JOptionPane.showInputDialog( "Enter first integer" ); 12 String secondnumber = 13 JOptionPane.showInputDialog( "Enter second integer" ); // converte String em valores int para utilização em um cálculo 16 int number1 = Integer.parseInt( firstnumber ); 17 int number2 = Integer.parseInt( secondnumber ); int sum = number1 + number2; // adiciona números 20 Mostra o diálogo de entrada para receber o primeiro inteiro 21 // exibe o resultado em um diálogo de mensagem JOptionPane 22 JOptionPane.showMessageDialog( null, "The sum is " + sum, 23 "Sum of Two Integers", JOptionPane.PLAIN_MESSAGE ); 24 } // fim do método main 25 } // fim da classe Addition Addition.java (1 de 2) Mostra o diálogo de entrada para receber o segundo inteiro Mostra o diálogo de mensagem para gerar a saída com o resultado da soma para o usuário 9 Prompt para o usuário Quando o usuário clica em OK, showinputdialog retorna ao programa o 100 digitado pelo usuário como uma String. O programa deve converter a String em um int Diálogo de entrada exibido nas linhas Diálogo de entrada exibido nas linhas Campo de texto em que o usuário digita um valor Addition.java (2 de 2) 10 barra de título Diálogo de entrada exibido nas linhas Quando o usuário clique em OK, o diálogo de mensagem é fechado (é removido da tela) 5

6 11 Observação sobre aparência e comportamento 11.2 O prompt em um diálogo de entrada emprega maiúsculas e minúsculas no estilo de frases um estilo que emprega a maiúscula inicial apenas na primeira palavra da frase a menos que a palavra seja um nome próprio (por exemplo, Deitel). Observação sobre aparência e comportamento 11.3 Em geral, a barra de título de uma janela adota o uso de letras maiúsculas e minúsculas de título de livro um estilo que emprega a inicial maiúscula em cada palavra significativa no texto e não termina com pontuação (por exemplo, Uso de Letras Maiúsculas e Minúsculas no Título de um Livro). 12 6

7 13 Tipo de diálogo de mensagem ERROR_MESSAGE INFORMATION_MESSAGE WARNING_MESSAGE QUESTION_MESSAGE PLAIN_MESSAGE Ícone Descrição Um diálogo que indica um erro para Yes o usuário. Um diálogo com uma mensagem informativa para o usuário. Um diálogo que adverte o usuário de um problema potencial. Um diálogo que impõe uma pergunta ao usuário. Normalmente, esse diálogo exige uma resposta, como clicar em um botão ou No. Nenhum Um diálogo que contém uma mensagem, mas ícone nenhum ícone.. Figura 11.3 Constantes JOptionPane static para diálogos de mensagem Visão geral de componentes Swing 14 Boa parte dos aplicativos exigem interfaces mais elaboradas do que o oferecido por JOptionPane; Componentes Swing GUI: Declarado no pacote javax.swing. A maioria dos componentes Swing são componentes Java puros escritos, manipulados e exibidos em Java. Fazem parte das Java Foundation Classes (JFC) bibliotecas do Java para desenvolvimento de GUI para múltiplas plataformas. 7

8 15 Componente JLabel JTextField JButton JCheckBox JComboBox JList JPanel Descrição Exibe texto não-editável ou ícones. Permite ao usuário inserir dados do teclado. Também pode ser utilizado para exibir texto editável ou não editável. Desencadeia um evento quando o usuário clicar nele com o mouse. Especifica uma opção que pode ser ou não selecionada. Fornece uma lista drop-down de itens a partir da qual o usuário pode fazer uma seleção clicando em um item ou possivelmente digitando na caixa. Fornece uma lista de itens a partir da qual o usuário pode fazer uma seleção clicando em qualquer item na lista. Múltiplos elementos podem ser selecionados. Fornece uma área em que os componentes podem ser colocados e organizados. Também pode ser utilizado como uma área de desenho para imagens gráficas. Figura 11.4 Alguns componentes GUI básicos. Swing versus AWT 16 Há dois conjuntos de componentes GUI: AWT e SWING. Abstract Window Toolkit (AWT): Precursor do Swing. Declarado no pacote java.awt. Não fornece aparência e comportamento consistentes para diversas plataformas, isto é, o mesmo aplicativo pode ter diferentes layouts em diferentes plataformas. Componentes Swing GUI permitem trabalhar com aparência e comportamento independente de plataforma, personalizado em cada plataforma ou até mesmo configurável pelo usuário. 8

9 17 Dica de portabilidade 11.1 Os componentes Swing são implementados no Java; desse modo, eles são mais portáveis e flexíveis do que os componentes Java GUI originais de pacotes java.awt, que foram baseados nos componentes GUI da plataforma subjacente. Por essa razão, os componentes Swing GUI geralmente são preferidos. Componentes GUI leves versus pesados Componentes leves: Não associados diretamente a componentes GUI suportados pela plataforma subjacente. Componentes pesados: Associados diretamente à plataforma local. Contam com o sistema de janela da plataforma local para determinar a aparência e o comportamento do aplicativo. Componentes AWT. Alguns componentes Swing. 18 9

10 19 Observação sobre aparência e comportamento 11.4 A aparência e o comportamento de uma GUI definida com componentes GUI pesados no pacote java.awt podem variar entre plataformas. Como os componentes pesados são acoplados à GUI da plataforma local, a aparência e o comportamento variam entre plataformas. Superclasses de componentes GUI leves do Swing Classe Component (pacote java.awt): Subclasse de Object e superclasse de vários componentes. Declara muitos comportamentos e atributos comuns a componentes GUI (tanto AWT quanto SWING). Classe Container (pacote java.awt): Subclasse de Component. Componentes são anexados a Containers (como janelas), para poderem ser organizados e exibidos na tela. Classe JComponent (pacotejavax.swing): Subclasse de Container. Superclasse de todos os componentes Swing leves

11 21 Observação de engenharia de software 11.1 Estude os atributos e comportamentos das classes na hierarquia de classe da Figura Essas classes declaram os recursos que são comuns à maioria dos componentes Swing. 22 Figura 11.5 Superclasses comuns de muitos dos componentes leves do Swing. 11

12 Superclasses de componentes GUI leves do Swing 23 Recursos dos componentes leves comuns: Aparência e comportamento plugáveis para personalizar a aparência dos componentes. Teclas de atalho (chamadas mnemônicas). Capacidades comuns de tratamento de eventos. Breves descrições do propósito de um componente GUI (chamadas dicas de ferramenta). Suporte para localização de interface com o usuário (personalização do ambiente). Suporte a deficientes físicos Exibição de texto e imagens em uma janela 24 Classe JFrame: A maioria das janelas é uma instância ou subclasse dessa classe. Fornece a barra de título. Fornece botões para minimizar, maximizar e fechar a aplicação. 12

13 Rotulando componentes GUI 25 Rótulo: Fornece instruções de texto ou informações que declaram o propósito de cada componente, visto que uma GUI pode conter muitos componentes. Criadas com a classe JLabel: Subclasse de JComponent. Parte do pacote javax.swing. Exibe uma única linha de texto de leitura, uma imagem ou ambos; Raramente são alterados, após criados. Observação sobre aparência e comportamento 11.5 Normalmente, o texto em um JLabel emprega maiúsculas e minúsculas no estilo de frases

14 Especificando o layout 27 Cada componente deve ser anexado a um contêiner, como uma janela JFrame. Organização dos contêineres: Determina onde os componentes são posicionados no contêiner (especifica o layout). É feita no Java com gerenciadores de layout. O Java disponibiliza vários gerenciadores, um dos quais é a classe FlowLayout (os componentes são posicionados da esquerda para a direita, a medida que são adicionados, até a próxima linha. Se o contêiner for redimensionado, o mesmo ocorrerá com os componentes). Há IDEs que permitem que o posicionamento e tamanho dos componentes ocorra com auxílio do mouse. O método setlayout() da classe JFrame recebe como argumento um objeto que implementa a interface LayoutManager. 1 // Fig. 11.6: LabelFrame.java 2 // Demonstrando a classe JLabel. 3 import java.awt.flowlayout; // especifica como os componentes são organizados 4 import javax.swing.jframe; // fornece recursos básicos de janela 5 import javax.swing.jlabel; // exibe texto e imagens 6 import javax.swing.swingconstants; // constantes comuns utilizadas com Swing 7 import javax.swing.icon; // interface utilizada para manipular imagens 8 import javax.swing.imageicon; // carrega imagens 9 10 public class LabelFrame extends JFrame 11 { 12 private JLabel label1; // JLabel apenas com texto 13 private JLabel label2; // JLabel construído com texto e ícone 14 private JLabel label3; // JLabel com texto e ícone adicionados // Construtor LabelFrame L adiciona JLabels a JFrame 17 public LabelFrame() 18 { 19 super( "Testing JLabel" ); 20 setlayout( new FlowLayout() ); // configura o layout de frame // Construtor JLabel com um argumento de string 23 label1 = new JLabel( "Label with text" ); 24 label1.settooltiptext( "This is label1" ); 25 add( label1 ); // adiciona label1 a JFrame 26 LabelFrame.java (1 de 2) 28 Demonstra vários recursos de JLabel e apresenta uma framework comum. É declarado 1 label para cada tratamento de JLabel. O construtor normalmente constrói a GUI que é exibida.o exemplo inicia disparando o construtor da superclasse, onde o argumento passado será o título da Frame 14

15 27 // construtor JLabel com string, Icon e argumentos de alinhamento 28 Icon bug = new ImageIcon( getclass().getresource( "bug1.gif" ) ); 29 label2 = new JLabel( "Label with text and icon",, bug, 30 SwingConstants.LEFT ); 31 label2.settooltiptext( "This is label2" ); 32 add( label2 ); // adiciona label2 a JFrame label3 = new JLabel(); // construtor JLabel sem argumentos 35 label3.settext( "Label with icon and text at bottom" ); 36 label3.seticon( bug ); // adiciona ícone a JLabel 37 label3.sethorizontaltextposition( SwingConstants.CENTER ); 38 label3.setverticaltextposition( SwingConstants.BOTTOM ); 39 label3.settooltiptext( "This is label3" ); 40 add( label3 ); // adiciona label3 a JFrame 41 } // fim do construtor LabelFrame 42 } // fim da class lasse LabelFrame LabelFrame.java (2 de 2) 29 getclass() retorna uma referência ao objeto Classe que representa a declaração da classe LabelFrame. getresource() retorna a localização da imagem como um URL, que é então utilizado pelo construtor de ImagemIcon para localizar a imagem e a carregar para a memória. Da forma que está o arquivo deve estar armazenado no mesmo local que o arquivo.class 1 // Fig. 11.7: LabelTest.java 2 // Testando LabelFrame. 3 import javax.swing.jframe; 4 5 public class LabelTest 6 { 7 public static void main( String args[] ) 8 { 9 LabelFrame labelframe = new LabelFrame(); // cria LabelFrame 10 labelframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 labelframe.setsize( 275, 180 ); // configura tamanho do frame 12 labelframe.setvisible( true ); // exibe frame 13 } // fim de main 14 } // fim da classe LabelTest LabelTest.java 30 15

16 Criando e anexando label1 31 Um objeto da classe JLabel pode ser criado passando uma String como argumento para seu construtor (será o texto a ser exibido no label). MétodosetToolTipText() da classe Jcomponent: Especifica a dica de ferramenta, sendo exibida quando o usuário posiciona o cursor do mouse sobre o label na GUI. Método add() da classe Container: Adiciona um componente, passado como argumento, a um contêiner. 32 Erro comum de programação 11.1 Se você não adicionar explicitamente um componente GUI a um contêiner, o componente GUI não será exibido quando o contêiner aparecer na tela. 16

17 33 Observação sobre a aparência e comportamento 11.6 Utilize as dicas de ferramenta para adicionar texto descritivo aos componentes GUI. Esse texto ajuda o usuário a determinar o propósito do componente GUI na interface com o usuário. Criando e anexando label2 34 Ícones são comumente utilizados para aprimorar a aparência de um aplicativo. Interface Icon (javax.swing): Pode ser adicionado a uma JLabel através do método seticon(), que recebe como argumento um Icon (qualquer objeto que implemente a interface Icon), ou através do próprio construtor de JLabel, que deve receber o mesmo argumento. Implementado pela classeimageicon (javax.swing). Suporta vários formatos de imagem, como GIF, PNG e JPEG. Interface SwingConstants: Declara um conjunto de constantes inteiras comuns, como as utilizadas para configurar o alinhamento dos componentes. Pode ser utilizada com os métodos sethorizontalalignment() e setverticalalignment() (como os de JLabel), onde cada um recebe como argumento a identificação do alinhamento a ser realizado. 17

18 Criando e anexando label3 35 Outros métodos JLabel, que podem ser usados para alterar a aparência de um rótulo: Construtor sem argumento (inicia sem texto e/ou imagem). gettext() esettext() Para configurar e recuperar o texto de um rótulo. Retorno/argumento são Strings. geticon() eseticon() Para configurar e recuperar o ícone exibido no rótulo. Retorno/argumento são Icon. setverticaltextposition() esethorizontaltextposition() Para configurar as posições vertical e horizontal do texto exibido no rótulo. As constantes de posição horizontal em SwingConstants são LEFT, CENTER e RIGHT. Já as de posição vertical são TOP, CENTER e BOTTOM. 36 Constante Constantes de posição horizontal SwingConstants.LEFT SwingConstants.CENTER SwingConstants.RIGHT Constantes de posição vertical SwingConstants.TOP SwingConstants.CENTER SwingConstants.BOTTOM Descrição Coloca o texto à esquerda. Coloca o texto no centro. Coloca o texto à direita. Coloca o texto na parte superior. Coloca o texto no centro. Coloca o texto na parte inferior. Figura 11.8 Alguns componentes GUI básicos. 18

19 Criando e exibindo uma janela LabelFrame 37 Outros métodos Jframe: setdefaultcloseoperation() Por padrão fechar uma janela só a oculta. O método acima determina como a aplicação reage quando o usuário clica no botão de fechar, isto é, especifica a operação de fechamento padrão da janela., através de seu argumento (por exemplo JFrame.EXIT_ON_CLOSE para indicar que o programa deve terminar quando a janela fechar) setsize() Especifica a largura e altura da janela, através de seus argumentos. setvisible() Determina se a janela é exibida (true) ou não (false), através de seu argumento Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas Um usuário interage com uma GUI para indicar as tarefas que o aplicativo deve realizar. GUIs são baseadas em evento: Uma interação com o usuário cria um evento, que guia o programa para realizar uma tarefa. Eventos comuns são clicar em um botão, digitar em um campo de texto, selecionar um item em um menu, fechar uma janela e mover o mouse. O evento causa uma chamada a um método que chamou um handler de evento. Handler de evento = código que realiza uma tarefa em resposta a um evento. O processo total de responder a eventos é conhecido como tratamento de evento

20 11.5 Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas. (Continuação) Classe JTextComponent (javax.swing.text): Superclasse dejtextfield (javax.swing) fornece recursos comuns a componentes baseados em texto. Superclasse de JPasswordField (javax.swing) adiciona métodos específicos para processamento de senhas. Adiciona o caractere de eco para ocultar a entrada de texto no componente. Permite que o usuário insira texto no componente quando o componente tem o foco da aplicação. Um componente pode receber o foco com um click do usuário nele. Depois que o texto for digitado no componente, e Enter for pressionado, um evento ocorre, relacionado ao componente em questão // Fig. 11.9: TextFieldFrame.java 2 // Demonstrando ndo a classe JTextField. 3 import java.awt.flowlayout; 4 import java.awt.event.actionlistener; 5 import java.awt.event.actionevent; 6 import javax.swing.jframe; 7 import javax.swing.jtextfield; 8 import javax.swing.jpasswordfield; 9 import javax.swing.joptionpane; public class TextFieldFrame extends JFrame 12 { 13 private JTextField textfield1; // campo de texto com tamanho configurado 14 private JTextField textfield2; // campo de texto construído com texto 15 private JTextField textfield3; // campo de texto com texto e tamanho 16 private JPasswordField passwordfield; // campo de senha com texto // Construtor TextFieldFrame adiciona JTextFields a JFrame 19 public TextFieldFrame() 20 { 21 super( "Testing JTextField and JPasswordField" ); 22 setlayout( new FlowLayout() ); // configura layout de frame // constrói textfield com 10 colunas 25 textfield1 = new JTextField( 10 ); 26 add( textfield1 ); // adiciona textfield1 a JFrame 27 TextFieldFrame.java (1 de 3) Seta o título da frame, pelo construtor da superclasse Cria um novo JTextField, indicando um tamanho de 10 colunas. Se o texto a ser digitado for maior do que 10 caracteres ele ficará parcialmente escondido, podendo ser visualizados pelas teclas de seta 40 20

21 28 // constrói campo de texto com texto padrão 29 textfield2 = new JTextField( "Enter text here" ); 30 add( textfield2 ); // adiciona textfield2 a JFrame // constrói textfield com texto padrão e 21 colunas 33 textfield3 = new JTextField( "Uneditable text field", 21 ); 34 textfield3.seteditable( false ); // desativa a edição 35 add( textfield3 ); // adiciona textfield3 ao JFrame // constrói passwordfield com o texto padrão 38 passwordfield = new JPasswordField( "Hidden text" ); 39 add( passwordfield ); // adiciona passwordfield a JFrame // registra handlers de evento 42 TextFieldHandler handler = new TextFieldHandler(); 43 textfield1.addactionlistener( handler ); 44 textfield2.addactionlistener( handler ); 45 textfield3.addactionlistener( handler ); 46 passwordfield.addactionlistener( handler ); 47 } // fim do construtor TextFieldFrame // classe interna private para tratamento de evento 50 private class TextFieldHandler implements ActionListener 51 { 52 // processa eventos de campo de texto 53 public void actionperformed( ActionEvent event ) 54 { 55 String string = ""; // declara string a ser exibida 56 Cria um novo JTextField, inicializando-o com um texto 41 Cria um TextFieldFrame novo JTextField não editável.java (dispara seteditable()), com texto inicial (2 de e 21 3) colunas de tamanho Cria um novo JPasswordField, com texto inicial (a largura do campo é a largura de tal texto) Cria um handler de evento Registra o handler de evento, para cada um dos componentes Cria uma classe de handler de evento implementando a interface ActionListener Declara o método actionperformed() 57 // usuário pressionou Enter no JTextField textfield1 58 if ( event.getsource() == textfield1 ) Testa se a origem do evento é o primeiro 59 string = String.format( "textfield1: %s", campo de texto 60 event.getactioncommand() ); 61 Obtém texto a partir do campo de texto 62 // usuário pressionou Enter no JTextField textfield2 TextFieldFrame 63 else if ( event.getsource() == textfield2 ) Testa se a origem do evento é o.java segundo 64 string = String.format( "textfield2: %s", campo de texto 65 event.getactioncommand() ); (3 de 3) // usuário pressionou Enter no JTextField textfield3 Obtém texto a partir do campo de texto 68 else if ( event.getsource() == textfield3 ) Testa se a origem do evento é o terceiro 69 string = String.format( "textfield3: %s", 70 event.getactioncommand() ); campo de texto // usuário pressionou Enter no JTextField passwordfield swordfield Obtém texto a partir do campo de texto 73 else if ( event.getsource() == passwordfield ) 74 string = String.format( "passwordfield: %s", Testa se a origem do evento é o campo de 75 new String( passwordfield.getpassword() ) ); senha // exibe conteúdo do JTextField Obtém senha a partir do campo de senha, 78 JOptionPane.showMessageDialog( null,, string ); através do método getpassword() 79 } // fim do método actionperformed 80 } // fim da classe TextFieldHandler interna private 81 } // fim da classe TextFieldFrame 42 21

22 1 // Fig : TextFieldTest.java 2 // Testando TextFieldFrame. 3 import javax.swing.jframe; 4 5 public class TextFieldTest 6 { 7 public static void main( String args[] ) 8 { 9 TextFieldFrame textfieldframe = new TextFieldFrame(); 10 textfieldframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 textfieldframe.setsize( 325, 100 ); // configura tamanho do d o frame 12 textfieldframe.setvisible( true ); // exibe o frame 13 } // fim de main 14 } // fim da classe TextFieldTest TextFieldTest.java (1 de 2) 43 Aparência inicial O que ocorre após o enter no 1º. Campo de texto 44 TextFieldTest.java (2 de 2) 22

23 Passos necessários para configurar o tratamento de evento de um componente GUI Vários passos de codificação são requeridos para que uma aplicação responda a eventos: Criar uma classe para representar o handler de evento. Implementar uma interface ouvinte de evento apropriada, na classe que representa o handler. Registrar o handler de evento (indicar que um objeto do 1º. Passo deve ser notificado quando o evento ocorrer). 45 Utilizando uma classe aninhada para implementar um handler de evento 46 Classe de primeiro nível: Não declarada dentro de uma outra classe. Classes aninhadas: Declaradas dentro de uma outra classe. Podem ser static ou não-static. Classes aninhadas não-static são chamadas classes internas. Freqüentemente utilizadas para tratamento de eventos, sendo que costuma ser criada uma classe para cada evento a ser tratado. 23

24 47 Observação de engenharia de software 11.2 Uma classe interna tem permissão de acessar diretamente variáveis e métodos de sua classe de primeiro nível, mesmo se eles forem private. Utilizando uma classe aninhada para implementar um handler de evento (Cont.) 48 JTextField e JPasswordField: Pressionar Enter dentro de um desses campos causa um ActionEvent (java.awt.event). Um evento assim é processado pelos objetos que implementam a interface ActionListener (java.awt.event). Tal interface declara o método actionperformed(), que deve ser implementado nas classe que forem se servir de tal interface. Esse método especifica as tarefas a serem realizadas quando ocorrer um ActionEvent, sendo disparada automaticamente quando tal evento ocorrer. 24

25 Registrando o handler de evento para cada campo de texto 49 Para que um handler de evento possa ser disparado quando um evento ocorrer é necessário associá-lo ao componente que contém o evento em questão. Registrando um handler de evento: Chama o método addactionlistener() do componente para registrar um objeto que implementaactionlistener (que será argumento do método). O objetoactionlistener ouve eventos no objeto ao qual foi registrado. Se um ouvinte não for registrado então o evento é consumido (ignorado pelo aplicativo). No caso do componente ser não editável, mesmo assim o evento pode ser disparado, caso o componente em questão venha a receber foco durante a execução do aplicativo. 50 Observação de engenharia de software 11.3 O ouvinte de evento para um evento deve implementar a interface apropriada para o evento. 25

26 51 Erro comum de programação 11.2 Esquecer de registrar um objeto tratador de eventos para um tipo de evento de um componente GUI particular faz com que o tipo seja ignorado. Detalhes do método actionperformed() da classe TextFieldHandler 52 Origem do evento: Componente a partir do qual o evento se origina, isto é, com o qual o usuário interage. Quando um evento ocorre o sistema cria um objetoactionevent único que contém informações sobre o evento que acabou de ocorrer, como a origem do evento. O sistema passa esse objeto em uma chamada do métodoactionperformed() do ouvinte de eventos. Pode ser determinado utilizando o método getsource(), de ActionEvent (pois este retorna uma referência ao objeto origem do evento). O texto digitado pelo usuário em um JTextField pode ser adquirido utilizando getactioncommand() de ActionEvent. O texto em um JPasswordField pode ser adquirido utilizando o métodogetpassword() dela, e retorna um array de caracteres. 26

27 11.6 Tipos comuns de eventos GUI e interfaces ouvintes 53 Há muitos tipos de eventos que podem ocorrer quando um usuário interage com uma GUI. As informações sobre qualquer evento GUI que ocorre são armazenadas em um objeto de uma classe que estende AWTEvent. Assim, os Tipos de eventos que podem ocorrer: Todos são subclasses de AWTEvent. Alguns são declarados no pacote java.awt.event. Aqueles específicos a componentes Swing são declarados no pacotejavax.swing.event Tipos comuns de eventos GUI e interfaces ouvintes (Continuação) 54 O mecanismo de tratamento de evento se divide em três partes (conhecido como Modelo de Delegação de Evento): A origem do evento é o componente com o qual o usuário interage. O objeto do evento é criado e contém as informações sobre o evento que aconteceu, como uma referência à sua origem. O ouvinte de evento é notificado pela origem do evento quando um evento acontece e um de seus métodos executa uma resposta ao evento, recebendo como argumento o objeto do evento, que é utilizado justamente para responder ao evento. Para cada tipo de objeto de evento, há em geral uma interface ouvinte de eventos correspondente. Um ouvinte de evento é um objeto que implementa a(s) interface(s) ouvintes de evento dos pacotesevent. event. Cada uma dessas interfaces especifica um ou mais métodos de tratamento de evento que devem ser declarados na classe que implementa a interface. Quando um evento ocorre o componente GUI notifica seus ouvintes registrados chamando o método de traamento apropriado de cada ouvinte. 27

28 55 Figura Algumas classes de evento do pacote java.awt.event. 56 Figura Algumas interfaces ouvintes de eventos comuns do pacote java.awt.event. 28

29 11.7 Como o tratamento de evento funciona Perguntas remanescentes: Como o handler de evento ficou registrado? A associação ocorre através da chamada à addactionlistener() do componente origem do evento, tendo como argumento o ouvinte de evento. Como o componente GUI sabe chamar actionperformed() em vez de algum outro método de tratamento de evento? Através do tipo de evento ao qual foi associado. 57 Registrando eventos 58 Cada JComponent tem uma variável de instância listenerlist (um array de ouvintes): Referencia um objeto do tipo EventListenerList (javax.swing.event). Mantém referências a todos os seus ouvintes registrados, para tratar os eventos do seu componente. A associação é feita justamente através do métodoaddactionlistener addactionlistener(), ou outro similar, de acordo com o tipo de evento. 29

30 59 Figura Registro de evento para JTextField textfield1. Invocação de handler de evento 60 Quando um evento ocorre é despachado somente aos ouvintes dos eventos que correspondem ao tipo de evento. O despacho é o processo pelo qual o componente GUI chama o método de tratamento de evento apropriado. Eventos têm um ID de evento único que especifica o tipo de evento, e com isso o ouvinte e o método a serem chamados. Cada tipo de evento tem uma ou mais interfaces ouvintes de eventos correspondentes. Exemplo: ActionEvents são tratados poractionlisteners MouseEvents são tratados pormouselisteners e MouseMotionsListeners. KeyEvents são tratados porkeylisteners. Assim, tudo que precisa ser feito é registrar um handler de evento para o tipo particular de evento que o aplicativo exige e o componente GUI assegurará que o método apropriado do handler do evento é chamado quando o evento ocorre. 30

31 11.8 JButton 61 Botão: Componente em que o usuário clica para acionar uma ação específica. Pode ser botão de comando, caixa de seleção, botão de alternância ou botão de opção. Os tipos de botões são subclasses da classe AbstractButton (javax.swing). 62 Figura Hierarquia do botão Swing. 31

32 63 Observação sobre aparência e comportamento 11.7 Em geral, os botões utilizam letras maiúsculas e minúsculas no estilo de título de livro JButton (Continuação) 64 Botão de comando: Gera um ActionEvent quando é clicado. Criado com a classe JButton. O texto na face do botão é chamado rótulo do botão. Uma GUI pode ter muitos JButton, mas, em geral, cada rótulo de botão deve ser único na parte da GUI em que é atualmente exibido. 32

33 65 Observação sobre aparência e comportamento 11.8 Ter mais de um JButton com o mesmo rótulo torna os JButtons ambíguos para o usuário. Forneça um rótulo único para cada botão. 1 // Fig : ButtonFrame.java 2 // Criando JButtons. 3 import java.awt.flowlayout; 4 import java.awt.event.actionlistener; 5 import java.awt.event.actionevent; 6 import javax.swing.jframe; 7 import javax.swing.jbutton; 8 import javax.swing.icon; 9 import javax.swing.imageicon; 10 import javax.swing.joptionpane; public class ButtonFrame extends JFrame 13 { Declara duas variáveis de instância JButton 14 private JButton plainjbutton; // botão b apenas com texto 15 private JButton fancyjbutton; // botão b com ícones // ButtonFrame adiciona JButtons ao JFrame 18 public ButtonFrame() 19 { 20 super( "Testing Buttons" ); 21 setlayout( new FlowLayout() ); // configura o layout do frame plainjbutton = new JButton( "Plain Button" B ); // botão b com texto 24 add( plainjbutton ); // adiciona a plainjbutton ao JFrame Icon bug1 = new ImageIcon( getclass().getresource( "bug1.gif" ) ); 27 Icon bug2 = new ImageIcon( getclass().getresource( "bug2.gif" ) ); 28 fancyjbutton = new JButton( "Fancy Button",, bug1 ); // con onfigura imagem 29 fancyjbutton.setrollovericon( bug2 ); // configura imagem de JButton rollover 30 add( fancyjbutton ); // adiciona fancyjbutton ao JFrame ButtonFrame.java (1 de 2) Cria um novo JButton, com texto Cria dois ImageIcons Cria um novo JButton, com imagem Configura o ícone de rollover para 66 33

34 // cria novo ButtonHandler para tratamento de evento de botão 33 ButtonHandler handler = new ButtonHandler(); 34 fancyjbutton.addactionlistener( handler ); 35 plainjbutton.addactionlistener( handler ); Cria um handler para botões 36 } // fim do construtor ButtonFrame BbuttonFrame.java // classe interna para tratamento de evento de botão Registra um handler de evento para cada (2 de 2) 39 private class ButtonHandler implements ActionListener botão 40 { 41 // trata evento de botão A classe interna implementa 42 public void actionperformed( ActionEvent event ) ActionListener 43 { 44 JOptionPane.showMessageDialog( ButtonFrame.this this,, String.format( 45 "You pressed: %s", event.getactioncommand() ) ); 46 } // fim do método actionperformed 47 } // fim da classe ButtonHandler interna privatep 48 } // fim da classe ButtonFrame Acessa a instância da classe externa utilizando essa referência, a partir da qual a caixa de diálogo será centralizada Obtém o texto do JButton pressionado Notar que a referência this foi associada a classe ButtonFrame, indicando que é a classe mais externa, e não a mais interna, que deve ser utilizada como GUI-pai do diálogo. 1 // Fig : ButtonTest.java 2 // Testando ButtonFrame. 3 import javax.swing.jframe; 4 5 public class ButtonTest 6 { 7 public static void main( String args[] ) 8 { 9 ButtonFrame buttonframe = new ButtonFrame(); // cria ButtonFrame 10 buttonframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 buttonframe.setsize( 275, 110 ); // configura tamanho do frame 12 buttonframe.setvisible( true ); // exibe o framef 13 } // fim de main 14 } // fim da classe ButtonTest ButtonTest.java (1 de 2) 68 34

35 69 ButtonTest.java (2 de 2) 11.8 JButton (Continuação) 70 JButtons podem ter um ícone de rollover. Um ícone de rollover aparece quando o mouse é posicionado sobre um botão. Assim, o ícone se altera quando o mouse está dentro/fora do botão. Adicionado a um JButton com o método setrollovericon(), tendo como argumento o ícone para rollover. 35

36 71 Observação sobre aparência e comportamento 11.9 Como a classe AbstractButton suporta exibição de texto e imagens em um botão, todas as subclasses de AbstractButton também suportam exibição de texto e imagens. Observação sobre aparência e comportamento Utilizar ícones rollover para JButtons fornece aos usuários um feedback visual que indica que, quando eles clicam no mouse enquanto o cursor está posicionado sobre o botão, uma ação ocorrerá

37 73 Observação de engenharia de software 11.4 Quando utilizada em uma classe interna, a palavra-chave this referencia o objeto de classe interna atual sendo manipulado. Um método de classe interna pode utilizar this do seu objeto de classe externa precedendo this com o nome de classe externa e um ponto, como em ButtonFrame.this Botões que mantêm o estado 74 Botões de estado: O Swing contém três tipos de botões de estado, que tem valores ativado / desativado ou verdadeiro / falso: JToggleButton, JCheckBox e JRadioButton. JCheckBox e JRadioButton são subclasses de JToggleButton. 37

38 JCheckBox JCheckBox (caixa de seleção): Contém um rótulo de caixa de seleção que aparece à direita da caixa de seleção por padrão. O rótulo é informado através do construtor da classe. Gera um ItemEvent quando é clicado. ItemEvents são tratados por um objeto da interface ItemListener. Passado para o método itemstatechanged() da interface e que portanto deve ser implementado pelo ouvinte do evento. Este é o método que será disparado quando ocorre um clique no checkbox. A associação do ouvinte ao objeto do evento ocorre através do método additemlistener(). O método isselected() retorna se uma caixa de seleção está selecionada (true) ou não (false). Um aplicativo pode ter vários checkbox atuando em conjunto // Fig : CheckBoxFrame.java 2 // Criando botões JCheckBox. 3 import java.awt.flowlayout; 4 import java.awt.font; 5 import java.awt.event.itemlistener; 6 import java.awt.event.itemevent; 7 import javax.swing.jframe; 8 import javax.swing.jtextfield; 9 import javax.swing.jcheckbox; Declara duas variáveis de instância public class CheckBoxFrame extends JFrame 12 { JCheckBox 13 private JTextField textfield; // exibe o texto na alteração de fontes 14 private JCheckBox boldjcheckbox; // para aplicar/remover remover seleção eção de negrito 15 private JCheckBox italicjcheckbox; // para aplicar/remover remover seleção de itáli lico // construtor CheckBoxFrame adiciona JCheckBoxes a JFrame 18 public CheckBoxFrame() 19 { 20 super( "JCheckBox Test" ); 21 setlayout( new FlowLayout() ); // configura o layout do frame // configura JTextField e sua fonte 24 textfield = new JTextField( "Watch the font style change", 20 ); 25 textfield.setfont( new Font( "Serif", Font.PLAIN.PLAIN, 14 ) ); 26 add( textfield ); // adiciona textfield a JFrame 27 CheckBoxFrame.java (1 de 3) 76 Tal exemplo utiliza 2 CheckBox para selecionar o estilo desejado de fonte do texto exibido em um JTextField. Configura a origem do campo de texto, através de um objetofont. Seus argumentos são: tipo, formato e tamanho da fonte. 38

39 28 boldjcheckbox = new JCheckBox( "Bold" ); // cria caixa de seleção de negrito italicjcheckbox = new JCheckBox( "Italic" ); // cria itálico ico 30 add( boldjcheckbox ); // adiciona caixa de seleção para negrito a JFrame 31 add( italicjcheckbox ); // adiciona caixa de seleção para negrito a JFrame Cria dois JCheckBoxes // registra ra listeners para JCheckBoxes CheckBoxFrame 34 CheckBoxHandler handler = new CheckBoxHandler();.java 35 boldjcheckbox.additemlistener( handler ); Cria um handler de evento 36 italicjcheckbox.additemlistener( handler ); (2 de 3) 37 } // fim do construtor CheckBoxFrame Registra um handler de evento com 38 JCheckBoxes criados 39 // classe interna private para tratamento de evento ItemListener 40 private class CheckBoxHandler implements ItemListener A classe interna implementa 41 { ItemListener 42 private int valbold = Font.PLAIN; // controla o estilo de fonte negrito 43 private int valitalic = Font.PLAIN; // controla o estilo de fonte itálico // responde e aos eventos de caixa de seleção 46 public void itemstatechanged( ItemEvent event ) O método 47 { itemstatechanged() é 48 // processa aos eventos de caixa de seleção de negrito chamado quando uma 49 if ( event.getsource() == boldjcheckbox ) JCheckBox é clicada 50 valbold = 51 boldjcheckbox.isselected()? Font.BOLD : Font.PLAIN; 52 Testa se JCheckBox está selecionada. Se estiver o estilo de fonte é setado com negrito, caso contrário com normal 53 // processa a eventos de caixa de seleção de itálic lico 54 if ( event.getsource() == italicjcheckbox ) 55 valitalic = 56 italicjcheckbox.isselected()? Font.ITALIC : Font.PLAIN; // configura fonte do campo de texto 59 textfield.setfont( 60 new Font( "Serif",, valbold + valitalic, 14 ) ); 61 } // fim do método itemstatechanged 62 } // fim da classe CheckBoxHandler interna private 63 } // fim da classe CheckBoxFrame Testa a origem do evento (qual componente foi clicado) O método isselected() CheckBoxFrame retorna se JCheckBox está.java selecionada (3 de 3) Tratamento de Fontes: O método setfont() é herdado de Component. É utilizado para configurar a fonte do componente como um novo objeto da classe Font (java.awt). O construtor da classe Font contém os argumentos: nome da fonte (String), estilo da fonte (constantes da classe Font. Como: Font.PLAIN, Font.BOLD, Font.ITALIC) e tamanho da fonte. No caso da fonte, quando mais de um estilo for ser considerado deve-se passar como argumento a soma de tais estilos (constantes). Relacionamento entre uma classe interna e sua classe de primeiro nível: Uma classe interna tem um relacionamento especial com sua classe de primeiro nível. A classe interna tem permissão de acessar diretamente todas as variáveis de instância e métodos da classe de primeiro nível

40 1 // Fig : CheckBoxTest.java 2 // Testando CheckBoxFrame. 3 import javax.swing.jframe; 4 5 public class CheckBoxTest 6 { 7 public static void main( String args[] ) 8 { 9 CheckBoxFrame checkboxframe = new CheckBoxFrame(); 10 checkboxframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 checkboxframe.setsize( 275, 100 ); // configura o tamanho do frame 12 checkboxframe.setvisible( true ); // exibe o frame 13 } // fim de mainm 14 } // fim da classe CheckBoxTest CheckBoxTest.java JRadioButton JRadioButton (opção): Tem dois estados selecionado e não selecionado. Normalmente aparece em um grupo no qual somente um botão de opção pode ser selecionado de cada vez. Grupo mantido por um objeto ButtonGroup (javax.swing). Serve para organizar um grupo de botões (estabelecer um relacionamento lógico) e ele mesmo não é exibido em uma GUI, apenas os radiobuttons que o compõe. Declara o método add() para adicionar um JRadioButton ao grupo. Tais botões de opção normalmente, representam opções mutuamente exclusivas. Gera um itemevent quando é clicado. Tendo tratamento similar ao JCheckBox

41 81 Erro comum de programação 11.3 Adicionar um objeto ButtonGroup (ou um objeto de nenhuma outra classe que não deriva de Component) a um contêiner resulta em um erro de compilação. 1 // Fig : RadioButtonFrame.java 2 // Criando botões de opção utilizando ButtonGroup e JRadioButton. 3 import java.awt.flowlayout; 4 import java.awt.font; 5 import java.awt.event.itemlistener; 6 import java.awt.event.itemevent; 7 import javax.swing.jframe; 8 import javax.swing.jtextfield; 9 import javax.swing.jradiobutton; 10 import javax.swing.buttongroup; public class RadioButtonFrame extends JFrame 13 { 14 private JTextField textfield; // usado para exibir alterações de fonte 15 private Font plainfont; // fonte e para texto simples 16 private Font boldfont; // fonte e para texto negrito 17 private Font italicfont; // fonte e para texto itálico 18 private Font bolditalicfont; // fonte para texto negrito e itálicoi 19 private JRadioButton plainjradiobutton; // seleciona texto simples 20 private JRadioButton boldjradiobutton; // seleciona texto negrito 21 private JRadioButton italicjradiobutton; // seleciona texto itálico 22 private JRadioButton bolditalicjradiobutton; // negrito e itálico 23 private ButtonGroup radiogroup; // buttongroup para armazenar botões de opção // construtor RadioButtonFrame adiciona JRadioButtons ao JFrame 26 public RadioButtonFrame() 27 { 28 super( "RadioButton Test" ); 29 setlayout( new FlowLayout() ); // configura layout do frame 30 RadioButtonFrame.java (1 de 3) Novamente um exemplo para alterar fonte de um textfield Declara quatro JRadioButtons e um ButtonGroup para gerenciá-los 82 41

42 31 textfield = new JTextField( "Watch the font style change", 25 ); 32 add( textfield ); // adiciona textfield ao JFrame // cria botões de opção 35 plainjradiobutton = new JRadioButton( "Plain", true ); 36 boldjradiobutton = new JRadioButton( "Bold", false ); 37 italicjradiobutton = new JRadioButton( "Italic", false ); 38 bolditalicjradiobutton = new JRadioButton( "Bold/Italic", false ); 39 add( plainjradiobutton adiobutton ); // adiciona botão simples ao JFrame 40 add( boldjradiobutton ); // adiciona botão de negrito ao JFrame 41 add( italicjradiobutton ); // adiciona botão de itálic lico ao JFrame 42 add( bolditalicjradiobutton ); // adiciona botão de itálico e negrito // cria relacionamento lógico entre JRadioButtons 45 radiogroup = new ButtonGroup(); // cria ButtonGroup 46 radiogroup.add( plainjradiobutton ); // adiciona simples ao grupo 47 radiogroup.add( boldjradiobutton ); // adiciona negrito ao grupo 48 radiogroup.add( italicjradiobutton ); // adiciona itálic lico o ao grupo 49 radiogroup.add( bolditalicjradiobutton ); // adiciona negrito e itálico // cria objetos de fonte 52 plainfont = new Font( "Serif", Font.PLAIN, 14 ); 53 boldfont = new Font( "Serif", Font.BOLD, 14 ); 54 italicfont = new Font( "Serif", Font.ITALIC, 14 ); 55 bolditalicfont = new Font( "Serif", Font.BOLD + Font.ITALIC nt.italic, 14 ); 56 textfield.setfont( plainfont ); // configura fonte f inicial ial à simples 57 RadioButtonFrame.java (2 de 3) Cria os quatro JRadioButtons. O construtor tem como argumentos o rótulo grito e true/false para indicar se o radionbutton está selecionado Cria o ButtonGroup Adiciona cada JRadioButton ao ButtonGroup Cria os objetos de Font, e inicializa a fonte do textfiled // registra eventos para JRadioButtons 59 plainjradiobutton.additemlistener( 60 new RadioButtonHandler( plainfont ) ); 61 boldjradiobutton.additemlistener( 62 new RadioButtonHandler( boldfont ) ); 63 italicjradiobutton.additemlistener( 64 new RadioButtonHandler( italicfont ) ); 65 bolditalicjradiobutton.additemlistener( 66 new RadioButtonHandler( bolditalicfont ) ); 67 } // fim do construtor RadioButtonFrame // classe interna private para tratar eventos de botão de opção 70 private class RadioButtonHandler implements ItemListener 71 { 72 private Font font; // fonte associada com esse listener public RadioButtonHandler( Font f ) 75 { 76 font = f; // configura a fonte desse listener 77 } // fim do construtor RadioButtonHandler // trata eventos de botão o de opção 80 public void itemstatechanged( ItemEvent event ) 81 { 82 textfield.setfont( font ); // configura fonte de textfield 83 } // fim do método itemstatechanged 84 } // fim da classe RadioButtonHandler interna private 85 } // fim da classe RadioButtonFrame Registra um handler de evento diferente com cada JRadioButton, RadioButtonFrame associando a cada um, um handler com.java objeto Font diferente. (3 de 3) A classe interna do handler de evento implementa ItemListener Quando o botão de opção é selecionado, a fonte do campo de texto é configurada com o valor passado para o construtor 84 42

43 1 // Fig : RadioButtonTest.java 2 // Testando RadioButtonFrame. 3 import javax.swing.jframe; 4 5 public class RadioButtonTest 6 { 7 public static void main( String args[] ) 8 { 9 RadioButtonFrame radiobuttonframe = new RadioButtonFrame(); 10 radiobuttonframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 radiobuttonframe.setsize( 300, 100 ); // configura tamanho do frame 12 radiobuttonframe.setvisible( true ); // exibe o frame 13 } // fim de main 14 } // fim da classe RadioButtonTest RadioButtonTest.java JComboBox e utilização de uma classe interna anônima para tratamento de eventos Caixa de combinação (ou lista drop-down) Fornece uma lista de itens a partir da qual o usuário pode fazer uma única seleção. Implementada pela classe JComboBox (subclasse de JComponent). Gera itemevent, assim como JCheckBox e JRadioButton. O construtor de um JComboBox recebe como argumento um array de Strings com os elementos da lista que deve ser exibida. O primeiro item da lista é o item inicialmente exibido no combobox. Cada item na lista tem um índice, iniciando com 0 (zero). O métodosetmaximumrowcount() configura o número máximo de linhas mostradas de cada vez. Para selecionar um item da lista clica-se no combobox, que se expande em uma lista a partir da qual o usuário pode fazer uma seleção. JComboBox fornece uma barra de rolagem e setas para cima e para baixo para percorrer a lista, quando há mais itens do que o máximo exibido por vez

44 87 Observação sobre aparência e comportamento Configure a contagem máxima de linha para uma JComboBox com um número de linhas que impede a lista de expandir-se para fora dos limites da janela em que ela é utilizada. Essa configuração irá assegurar que a lista seja exibida corretamente quando for expandida pelo usuário. Utilizando uma classe interna anônima para tratamento de evento Classe interna anônima: Forma especial de classe interna, declarada sem nome. Em geral, aparece dentro de uma chamada de método, sendo um argumento de tal método. Como com outras classes internas, uma classe interna anônima pode acessar os membros de sua classe de primeiro nível. No entanto, tem acesso limitado a variáveis locais do método em que é declarada. Deve-se criar um objeto da classe interna anônima no ponto em que a classe é declarada

45 1 // Fig : ComboBoxFrame.java 2 // Usando a JComboBox para selecionar uma image para exibição. 3 import java.awt.flowlayout; 4 import java.awt.event.itemlistener; 5 import java.awt.event.itemevent; 6 import javax.swing.jframe; 7 import javax.swing.jlabel; 8 import javax.swing.jcombobox; 9 import javax.swing.icon; 10 import javax.swing.imageicon; public class ComboBoxFrame extends JFrame 13 { 14 private JComboBox imagesjcombobox; // caixa de combinação p/ armazenar nomes de ícones 15 private JLabel label; // rótulo para exibir ícone selecionado 16 Declara a variável de instância JComboBox 17 private String names[] = 18 { "bug1.gif", "bug2.gif", "travelbug.gif", "buganim.gif" }; 19 private Icon icons[] = { 20 new ImageIcon( getclass().getresource( names[ 0 ] ) ), 21 new ImageIcon( getclass().getresource( names[ 1 ] ) ), 22 new ImageIcon( getclass().getresource( names[ 2 ] ) ), 23 new ImageIcon( getclass().getresource( names[ 3 ] ) ) }; // construtor ComboBoxFrame adiciona JComboBox ao JFrame 26 public ComboBoxFrame() 27 { 28 super( "Testing JComboBox" ); 29 setlayout( new FlowLayout() ); // configura layout do frame 30 ComboBoxFrame.java (1 de 2) Declara array com os 4 Icon a serem trabalhados, cujas identificações foram estabelecidas no array antes declarado, names 89 Aplicativo que utiliza um JComboBox para fornecer uma lista de 4 nomes de arquivo de imagem a partir da qual o usuário pode fazer a seleção de uma imagem que ele quer exibir. 31 imagesjcombobox = new JComboBox( names ); // configura a JComboBox 32 imagesjcombobox.setmaximumrowcount( 3 ); // exibe três linhas imagesjcombobox.additemlistener( 35 new ItemListener() // classe interna anônima 36 { 37 // trata evento JComboBox 38 public void itemstatechanged( ItemEvent event ) 39 { 40 // determina se caixa de seleção está marcada ou não 41 if ( event.getstatechange() == ItemEvent.SELECTED ) 42 label.seticon( icons[ 43 imagesjcombobox.getselectedindex() ] ); 44 } // fim do método itemstatechanged 45 } // fim da classe interna anônima 46 ); // fim da chamada para additemlistener add( imagesjcombobox ); // adiciona a caixa de combinação ao o JFrame 49 label = new JLabel( icons[ 0 ] ); // exibe o primeiro ícon cone 50 add( label ); // adiciona rótulo ao JFrame 51 } // fim do construtor ComboBoxFrame 52 } // fim da classe ComboBoxFrame Cria JComboBox e configura a contagem máxima de linhas Cria classe interna anônima como o handler de evento dentro da ComboBoxrame chamada do método.java Declara o método itemstatechanged (2 de 2) Testa a alteração de estado da JComboBox Interessa que o item esteja sendo selecionado O método getselectedindex() identifica o item selecionado no combobox. O argumento para additemlistener() deve ser um objeto ItemListener. O que está dentro dos parênteses da chamada do método é uma expressão de criação da instância de classe que declara uma classe interna anônima e cria um objeto dessa classe. Uma referência ao objeto criado é passado como argumento para o método. Os parênteses depois de ItemListener() indicam uma chamada ao construtor padrão da classe interna anônima. As chaves de abertura e fechamento após tal construtor delimitam o corpo da classe interna anônima. Para cada item selecionado de um combobox, a seleção de outro item primeiro é removida. Assim ocorrem dois itemevents um para o item removido e outro para o novo item selecionado

46 1 // Fig : ComboBoxTest.java 2 // Testando ComboBoxFrame. 3 import javax.swing.jframe; 4 5 public class ComboBoxTest 6 { 7 public static void main( String args[] ) 8 { 9 ComboBoxFrame comboboxframe = new ComboBoxFrame(); 10 comboboxframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 comboboxframe.setsize( 350, 150 ); // configura o tamanho do frame 12 comboboxframe.setvisible( true ); // exibe o frame 13 } // fim de main 14 } // fim da classe ComboBoxTest ComboBoxTest.java 91 Barra de rolagem para rolar pelos itens na lista setas de rolagem caixa de rolagem Observação de engenharia de software 11.5 Uma classe interna anônima declarada em um método pode acessar as variáveis de instância e métodos do objeto de classe de primeiro nível que a declararam, bem como as variáveis locais final do método, mas não pode acessar variáveis não-final do método

47 93 Observação de engenharia de software 11.6 Como qualquer outra classe, quando uma classe interna anônima implementa uma interface, a classe deve implementar cada método na interface JList Lista: Exibe uma série de itens dentre os quais usuário pode selecionar um ou mais. Implementada pela classe JList, subclasse de JComponent. Permite listas de seleção única ou listas de múltipla seleção. Um ListSelectionEvent ocorre quando um item é selecionado. Tratado por um ListSelectionListener e passado para o método valuechanged(), que deve ser implementado no ouvinte. O método setvisiblerowcount() permite determinar a quantidade de itens visualizados por vez (argumento informado). O método setselecionmode() permite determinar o modo de seleção (simples/múltipla) da lista, recebendo normalmente como argumento alguma constante da classelistselecionmodel (SINGLE_SELECTION um item,, SINGLE_INTERVAL_SELECTION itens contínuos,, MULTIPLE_INTERVAL_SELECTION vários itens). O método para associar um ouvinte é addlistselectionlistener() ()

48 1 // Fig : ListFrame.java 2 // Selecionando cores a partir de uma JList. 3 import java.awt.flowlayout; 4 import java.awt.color; 5 import javax.swing.jframe; 6 import javax.swing.jlist; 7 import javax.swing.jscrollpane; 8 import javax.swing.event.listselectionlistener; 9 import javax.swing.event.listselectionevent; 10 import javax.swing.listselectionmodel; public class ListFrame extends JFrame 13 { 14 private JList colorjlist; // lista a para exibir cores 15 private final String colornames[] = { "Black", "Blue", "Cyan", 16 "Dark Gray", "Gray", "Green", "Light Gray", "Magenta", 17 "Orange", "Pink", "Red", "White", "Yellow" }; 18 private final Color colors[] = { Color.BLACK, Color.BLUE, Color.CYAN CYAN, 19 Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, 20 Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE, 21 Color.YELLOW }; // construtor ListFrame adiciona JScrollPane que contém JList ao JFrame 24 public ListFrame() 25 { 26 super( "List Test" ); 27 setlayout( new FlowLayout() ); // configura o layout de frame 28 ListFrame.java (1 de 2) Muda a cor de fundo da frame de acordo com a cor selecionada na lista. Usa lista de seleção única. Declara a variável de instância JList Arrays com nomes das cores e os objetos Color correspondentes colorjlist = new JList( colornames ); // cria com colornames colorjlist.setvisiblerowcount( 5 ); // exibe cinco linhas de uma vez Cria JList, sendo argumento // não permite múltiplas seleções do construtor um array de 33 colorjlist.setselectionmode( ListSelectionModel.SINGLE_SELECTION ); Objects com os itens da lista 34 ListFrame.java 35 // adiciona um JScrollPane que contém JList ao frame Configura o modo de seleção da JList 36 add( new JScrollPane( colorjlist ) ); (2 de 2) colorjlist.addlistselectionlistener( 39 new ListSelectionListener() // classe interna anônima 40 { 41 // trata eventos de seleção de lista 42 public void valuechanged( ListSelectionEvent event ) 43 { 44 getcontentpane().setbackground( 45 colors[ colorjlist.getselectedindex() ] ); 46 } // fim do método valuechanged 47 } // fim da classe interna anônima nima 48 ); // fim da chamada para addlistselectionlistener 49 } // fim do construtor ListFrame 50 } // fim da classe ListFrame Adiciona JList a uma ScrollPane e a adiciona à aplicação Obtém o índice do item selecionado, utilizando-o para capturar o objetocolor do array, que por sua vez é utilizado para atualizar a cor de backgroup do painel de conteúdo no qual o objeto está contido Ao contrário de uma JComboBox uma JList não fornece uma barra de rolagem se houver mais itens na lista do que o número de itens visíveis. Um objeto JScrollPane é usado para suprir tal necessidade. Seu construtor recebe como argumento um objeto JComponent que precisa de rolagem. Todo JFrame consiste de três camadas: o fundo, o painel de conteúdo (aparece na frente do fundo e é onde os componentes são exibidos) e o painel transparente (utilizado para exibir dicas de ferramentas e outros itens que devem aparecer na frente dos componentes). 48

49 1 // Fig : ListTest.java 2 // Selecionando cores a partir de uma JList. 3 import javax.swing.jframe; 4 5 public class ListTest 6 { 7 public static void main( String args[] ) 8 { 9 ListFrame listframe = new ListFrame(); // cria ListFrame 10 listframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 listframe.setsize( 350, 150 ); // configura tamanho do frame 12 listframe.setvisible( true ); // exibe o frame 13 } // fim de main 14 } // fim da classe ListTest ListTest.java Listas de seleção múltipla Lista de seleção múltipla: Permite que um usuário selecione vários itens ao mesmo tempo. ListSelectionModel.SINGLE_INTERVAL_SELE CTION indica a seleção de um único intervalo que permite apenas um intervalo contínuo de itens. Clica-se no 1º. Item e em seguida no último, mantendo a tecla Shift pressionada. ListSelectionModel.MULTIPLE_INTERVAL_SE LECTION indica a seleção de múltiplos intervalos que permite que qualquer conjunto de elementos seja selecionado. Clica-se nos itens desejados mantendo a tecla Ctrl pressionada

50 1 // Fig : MultipleSelectionFrame.java 2 // Copiando itens de uma List para a outra. 3 import java.awt.flowlayout; 4 import java.awt.event.actionlistener; 5 import java.awt.event.actionevent; 6 import javax.swing.jframe; 7 import javax.swing.jlist; 8 import javax.swing.jbutton; 9 import javax.swing.jscrollpane; 10 import javax.swing.listselectionmodel; public class MultipleSelectionFrame extends JFrame 13 { 14 private JList colorjlist; // lista a para armazenar nomes s de cores 15 private JList copyjlist; // lista a para copiar nomes de cores no 16 private JButton copyjbutton; // botão b para copiar nomes selecionados 17 private final String colornames[] = { "Black", "Blue", "Cyan", 18 "Dark Gray", "Gray", "Green", "Light Gray", "Magenta", "Orange", 19 "Pink", "Red", "White", "Yellow" }; // construtor MultipleSelectionFrame 22 public MultipleSelectionFrame() 23 { 24 super( "Multiple Selection Lists" ); 25 setlayout( new FlowLayout() ); // configura layout do frame 26 Multiple SelectionFram e.java (1 de 3) Aplicativo que copia os itens de uma JList para outra colorjlist = new JList( colornames ); // armazena nomes de todas as cores colorjlist.setvisiblerowcount( 5 ); // mostra cinco linhas 29 colorjlist.setselectionmode( 30 ListSelectionModel.MULTIPLE_INTERVAL_SELECTION _SELECTION ); 31 add( new JScrollPane( colorjlist ) ); // adiciona lista a com scrollpane Utiliza uma lista de 32 seleção de múltiplos Multiple 33 copyjbutton = new JButton( "Copy >>>" ); // cria botão de cópia intervalos SelectionFram 34 copyjbutton.addactionlistener( e 35.java 36 new ActionListener() // classe interna anônima 37 { 38 // trata evento de botão 39 public void actionperformed( ActionEvent event ) 40 { 41 // coloca valores selecionados na copyjlist 42 copyjlist.setlistdata( colorjlist.getselectedvalues() ); 43 } // fim do método actionperformed 44 } // fim da classe interna anônima 45 ); // fim da chamada para addactionlistener 46 (2 de 3) Utiliza os métodos setlistdata() para setar um conjunto de itens (array de Objects) em uma lista e getselectedvalues() para capturar um conjunto de itens (array de Objects) selecionados - para copiar valores de uma JList para outra Não há nenhum evento para indicar que um usuário fez múltiplas seleções em uma lista de seleção múltipla. É um evento externo, no exemplo, o clique de um JButton que indica a necessidade de se realizar a cópia. 50

51 47 add( copyjbutton ); // adiciona botão de cópia ao JFrame copyjlist = new JList(); // cria lista p/ p armazenar nomes de Configura cor copiados a largura da célula para 50 copyjlist.setvisiblerowcount( 5 ); // mostra 5 linhas apresentação 51 copyjlist.setfixedcellwidth( 100 ); // configura largura 52 copyjlist.setfixedcellheight( 15 ); // configura altura Multiple 53 copyjlist.setselectionmode( Configura a altura da célula SelectionFram para 54 ListSelectionModel.SINGLE_INTERVAL_SELECTION ); apresentação e 55 add( new JScrollPane( copyjlist ) ); // adiciona lista com scrollpane.java 56 } // fim do construtor MultipleSelectionFrame 57 } // fim da classe MultipleSelectionFrame Configura o modelo de seleção (3 de 3) como seleção de um único intervalo A criação de copyjlist está após a declaração do método actionperformed(), mas efetivamente a execução de tal método ocorre somente após o construtor ter se completado, e portanto não haverá problemas de referência. 1 // Fig : MultipleSelectionTest.java 2 // Testando MultipleSelectionFrame. 3 import javax.swing.jframe; 4 5 public class MultipleSelectionTest 6 { 7 public static void main( String args[] ) 8 { 9 MultipleSelectionFrame multipleselectionframe = 10 new MultipleSelectionFrame(); 11 multipleselectionframe.setdefaultcloseoperation( 12 JFrame.EXIT_ON_CLOSE ); 13 multipleselectionframe.setsize( 350, 140 ); // configura o tamanho do frame 14 multipleselectionframe.setvisible( true ); // exibe o frame 15 } // fim de main 16 } // fim da classe MultipleSelectionTest 102 Multiple SelectionTest.java 51

52 11.13 Tratamento de evento de mouse Eventos de mouse: Os eventos de mouse podem ser capturados por qualquer componente GUI que deriva de java.awt.component. Cria um objeto MouseEvent, que é aceito por cada um dos métodos de tratamento de evento de mouse. Tal objeto contém informações sobre o evento ocorrido, como as coordenadas x e y de onde ele ocorreu. Tratado pelas interfaces MouseListener e MouseMotionListener. A interface MouseInputListener estende as duas interfaces. A interface MouseWheelListener declara o método mousewheelmoved() para tratar MouseWheelEvents. São características relacionadas à rotação da roda de um mouse. Os métodos de um componente disparados para associação de um ouvinte são: addmouselistener() e addmousemotionlistener() Métodos de interface MouseListener e MouseMotionListener Métodos de interface MouseListener public void mousepressed( MouseEvent event ) Chamado quando um botão do mouse é pressionado enquanto o cursor de mouse estiver sobre um componente. public void v mouseclicked( MouseEvent event ) Chamado quando um botão do mouse é pressionado e liberado enquanto o cursor do mouse pairar sobre um componente. Esse evento é sempre precedido por uma chamada para mousepressed. public void mousereleased( MouseEvent event ) Chamado quando um botão do mouse é liberado depois de ser pressionado. Esse evento sempre é precedido por uma chamada para mousepressed e um ou mais chamadas para mousedragged. public void mouseentered( MouseEvent event ) Chamado quando o cursor do mouse entra nos limites de um componente. Figura Métodos de interface MouseListener e MouseMotionListener. (Parte 1 de 2.) 52

53 105 Métodos de interface MouseListener e MouseMotionListener public void mouseexited( MouseEvent event ) Chamado quando o cursor do mouse deixa os limites de um componente. Métodos de interface MouseMotionListener public void mousedragged( MouseEvent event ) Chamado quando o botão do mouse é pressionado enquanto o cursor de mouse estiver sobre um componente e o mouse é movido enquanto o botão do mouse permanecer pressionado. Esse evento é sempre precedido por uma chamada para mousepressed. Todos os eventos de arrastar são enviados para o componente em que o usuário começou a arrastar o mouse. public void mousemoved( MouseEvent event ) Chamado quando o mouse é movido quando o cursor de mouse estiver sobre um componente. Todos os eventos de movimento são enviados para o componente sobre o qual o mouse atualmente está posicionado. Figura Métodos de interface MouseListener e MouseMotionListener. (Parte 2 de 2.) Observação sobre a aparência e comportamento As chamadas de método para mousedragged e mousereleased são enviadas ao MouseMotionListener do Component em que uma operação de arrastar do mouse se iniciou. De maneira semelhante, a chamada de método mousereleased no fim de uma operação de arrastar é enviada para o MouseListener de Component em que a operação de arrastar se iniciou

54 1 // Fig : MouseTrackerFrame.java 2 // Demonstrando eventos de mouse. 3 import java.awt.color; 4 import java.awt.borderlayout; 5 import java.awt.event.mouselistener; 6 import java.awt.event.mousemotionlistener; 7 import java.awt.event.mouseevent; 8 import javax.swing.jframe; 9 import javax.swing.jlabel; 10 import javax.swing.jpanel; public class MouseTrackerFrame extends JFrame 13 { 14 private JPanel mousepanel; // painel em que eventos de mouse ocorrerão 15 private JLabel statusbar; // rótulo que exibe informações sobre evento // construtor MouseTrackerFrame configura GUI e 18 // registra ra handlers de evento de mouse 19 public MouseTrackerFrame() 20 { 21 super( "Demonstrating ng Mouse Events" ); mousepanel = new JPanel(); // cria painel 24 mousepanel.setbackground( Color.WHITE ); // configura cor de fundo 25 add( mousepanel, BorderLayout.CENTER ); // adiciona painel ao JFrame statusbar = new JLabel( "Mouse outside JPanel" ); 28 add( statusbar, BorderLayout.SOUTH ); // adiciona rótulo ao JFrame 29 MouseTracker Frame.java (1 de 4) Cria JPanel para capturar eventos de mouse 107 Este aplicativo exibe informações sobre o mouse em um label, considerando um painel como componente. Configura o fundo como branco Cria JLabel e o adiciona à aplicação, na posição SOUTH 30 // cria e registra listener para mouse e eventos de movimento de mouse MouseHandler handler = new MouseHandler(); Cria handler de evento para eventos de 32 mousepanel.addmouselistener( handler ); 33 mousepanel.addmousemotionlistener( handler ); mouse 34 } // fim do construtor MouseTrackerFrame Registra um handler de evento 35 MouseTracker 36 private class MouseHandler implements MouseListener, Implementa interfaces ouvintes Frame.java de mouse. 37 MouseMotionListener 38 { Preferiu-se estender as duas, ao invés de (2 de 4) 39 // handlers de evento MouseListener trabalhar com MouseInputListener 40 // trata evento quando o mouse é liberado logo depois de pressionado 41 public void mouseclicked( MouseEvent event ) 42 { Declara o método mouseclicked() 43 statusbar.settext( String.format( "Clicked at [%d, %d]", 44 event.getx(), event.gety() ) ); 45 } // fim do método mouseclicked // trata evento quando mouse é pressionado 48 public void mousepressed( MouseEvent event ) 49 { 50 statusbar.settext( String.format( "Pressed at [%d, %d]", 51 event.getx(), event.gety() ) ); 52 } // fim do método mousepressed // trata evento quando mouse é liberado depois da operação de arrastar 55 public void mousereleased( MouseEvent t event ) 56 { 57 statusbar.settext( String.format( "Released at [%d, %d]", 58 event.getx(), event.gety() ) ); 59 } // fim do método mousereleased Determina a localização (coordenadas x e y) do clique de mouse Declara o método mousepressed() Declara o método mousereleased() 54

55 60 61 // trata evento quando mouse entra na área 62 public void mouseentered( MouseEvent event ) 63 { 64 statusbar.settext( String.format( "Mouse entered at [%d, %d]", 65 event.getx(), event.gety() ) ); MouseTracker 66 mousepanel.setbackground( Color.GREEN ); Frame.java 67 } // fim do método mouseentered Configura o segundo plano de JPanel // trata evento quando mouse sai da área 70 public void mouseexited( MouseEvent event ) 71 { 72 statusbar.settext( "Mouse outside JPanel" ); 73 mousepanel.setbackground( Color.WHITE ); 74 } // fim do método mouseexited 75 Declara o método mouseentered() (3 de 4) Declara o método mouseexited() Configura o segundo plano de JPanel Observar pelos métodos acima descritos que o painel terá fundo branco quando o mouse não estiver sobre ele e fundo verde caso contrário // MouseMotionListener event handlers 77 // trata evento MouseMotionListener 78 public void mousedragged( MouseEvent event ) 79 { 80 statusbar.settext( String.format( "Dragged at [%d, %d]", 81 event.getx(), event.gety() ) ); 82 } // fim do método mousedragged // trata evento quanto usuário move o mouse 85 public void mousemoved( MouseEvent event ) 86 { 87 statusbar.settext( String.format( "Moved at a t [%d, %d]", 88 event.getx(), event.gety() ) ); 89 } // fim do método mousemoved 90 } // fim da classe MouseHandler interna 91 } // fim da classe MouseTrackerFrame Declara o método mousedragged() MouseTracker Frame.java (4 de 4) Declara o método mousemoved() 110 Como a classe MouseHandler implementa as duas interfaces ouvintes de eventos de mouse, ela deverá conter implementações de todos os métodos declarados em tais interfaces, sendo estes os 7 métodos identificados no exemplo acima. Outra questão a ser notada é que o gerenciador de layout não foi definido, portanto será utilizado o gerenciador de layout padrão, BorderLayout que trabalha dividindo o layout nas regiões NORTH, SOUTH, EAST, WEST, CENTER. Um componente colocado na região CENTER será dimensionado para ocupar todo o componente que não esteja ocupado por outros componentes nas outras regiões. Observar que o statusbar é colocado na região SOUTH e ocupa a largura do JFrame, mas apenas a altura correspondente ao próprio label. 55

56 1 // Fig : MouseTrackerFrame.java 2 // Testando MouseTrackerFrame. 3 import javax.swing.jframe; 4 5 public class MouseTracker 6 { 7 public static void main( String args[] ) 8 { 9 MouseTrackerFrame mousetrackerframe = new MouseTrackerFrame(); 10 mousetrackerframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 mousetrackerframe.setsize( 300, 100 ); // configura o tamanho do frame 12 mousetrackerframe.setvisible( true ); // exibe o frame 13 } // fim de main 14 } // fim da classe MouseTracker MouseTracker Frame.java (1 de 2) MouseTracker Frame.java (2 de 2) 56

57 11.14 Classes adaptadoras Muitas interfaces ouvintes de eventos contêm múltiplos métodos. Não é sempre desejável declarar cada método em uma interface ouvinte de evento. Para tratar tal situação são fornecidas as classes adaptadoras ouvintes de evento. Uma classe adaptadora: Implementa uma interface ouvinte de evento. Fornece uma implementação-padrão (com o corpo de um método vazio) para todos os métodos de tratamento de eventos. Uma classe adaptadora pode ser estendida para tratar com o ouvinte do evento e são sobrescritos apenas os métodos necessários ao mesmo Classe adaptadora de evento em java.awt.event ComponentAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter Implementa interface ComponentListener ContainerListener FocusListener KeyListener MouseListener MouseMotionListener er WindowListener Figura Classes adaptadoras de evento e as interfaces que elas implementam no pacote java.awt.event. 57

58 115 Observação de engenharia de software 11.7 Quando uma classe implementa uma interface, a classe tem um relacionamento é um com essa interface. Todas as subclasses diretas e indiretas dessa classe herdam essa interface. Portanto, um objeto de uma classe que estende uma classe adaptadora de evento é um objeto do tipo ouvinte de eventos correspondente (por exemplo, um objeto de uma subclasse de MouseAdapter é um MouseListener). Herdando MouseAdapter (exemplo) 116 MouseAdapter: Classe adaptadora para as interfaces MouseListener e MouseMotionListener. Estender a classe permite sobrescrever somente os métodos que você deseja utilizar. Disponível no pacotejava.awt.event java.awt.event. 58

59 117 Erro comum de programação 11.4 Se você estender uma classe adaptadora e digitar incorretamente o nome do método que você está sobrescrevendo, o método simplesmente tornase outro método na classe. Esse é um erro de lógica difícil de ser detectado, visto que o programa chamará a versão vazia do método herdado da classe adaptadora. 1 // Fig : MouseDetailsFrame.java 2 // Demonstrando cliques de mouse e distinguindo entre botões do mouse. 3 import java.awt.borderlayout; 4 import java.awt.graphics; 5 import java.awt.event.mouseadapter; 6 import java.awt.event.mouseevent; 7 import javax.swing.jframe; 8 import javax.swing.jlabel; 9 10 public class MouseDetailsFrame extends JFrame 11 { 12 private String details; // representação String 13 private JLabel statusbar; // JLabel que aparece arece no botão de janela // construtor configura barra de título String e registra o listener de mouse 16 public MouseDetailsFrame() 17 { 18 super( "Mouse clicks and buttons" ); statusbar = new JLabel( "Click the mouse" ); 21 add( statusbar, BorderLayout.SOUTH ); 22 addmouselistener( new MouseClickHandler() ); // adiciona handler 23 } // fim do construtor MouseDetailsFrame 24 MouseDetails Frame.java (1 de 2) Registra um handler de evento da própria frame 118 Aplicativo que demonstra como realizar a contagem de cliques do mouse e como distinguir entre os diferentes botões do mouse. 59

60 25 // classe interna para tratar eventos de mouse 26 private class MouseClickHandler extends MouseAdapter 27 { 28 // trata evento de clique de mouse e determina qual botão foi pressionado 29 public void mouseclicked( MouseEvent event ) 30 { 31 int xpos = event.getx(); // obtém posição x do mouse 32 int ypos = event.gety(); // obtém posição y do mouse details = String.format( "Clicked %d time(s)", 35 event.getclickcount() ); if ( event.ismetadown() ) // botão direito do mouse 38 details += " with right mouse button"; 39 else if ( event.isaltdown() ) // botão do meio do mouse 40 details += " with center mouse button"; 41 else // botão esquerdo do mouse 42 details += " with left mouse button"; statusbar.settext( details ); // exibe mensagem na statusbar 45 } // fim do método mouseclicked 46 } // fim da classe interna private MouseClickHandler 47 } // fim da classe MouseDetailsFrame MouseDetails Frame.java Obtém o número de vezes (2 que de o 2) botão do mouse foi clicado Testa se o botão direito do mouse foi clicado Testa se o botão do meio do mouse foi clicado // Fig : MouseDetails.java 2 // Testando MouseDetailsFrame. 3 import javax.swing.jframe; 4 5 public class MouseDetails 6 { 7 public static void main( String args[] ) 8 { 9 MouseDetailsFrame mousedetailsframe = new MouseDetailsFrame(); 10 mousedetailsframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 mousedetailsframe.setsize( 400, 150 ); // configura o tamanho do frame 12 mousedetailsframe.setvisible( true ); // obtém o frame 13 } // fim de main 14 } // fim da classe MouseDetails MouseDetails.java (1 de 2)

61 121 MouseDetails.java (2 de 2) Subclasse JPanel para desenhar com o mouse Sobrescrevendo a classe JPanel: Fornece uma área dedicada de desenho, em que o usuário pode desenhar arrastando o mouse

62 123 Método InputEvent Descrição ismetadown() isaltdown() Retorna true quando o usuário clica no botão direito do mouse em um mouse com dois ou três botões. Para simular um clique de botão direito com um mouse de um botão, o usuário pode manter pressionada a tecla Meta no teclado e clicar no botão do mouse. Retorna true quando o usuário clica no botão do mouse do meio em um mouse com três botões. Para simular um clique com o botão do meio do mouse em um mouse com um ou dois botões, o usuário pode pressionar a tecla Alt no teclado e clicar no único botão ou no botão esquerdo do mouse. Figura Os métodos InputEvent que ajudam a distinguir entre os cliques do botão esquerdo, do centro e direito do mouse. Método paintcomponent() Método paintcomponent(): Pertence à classejcomponent JComponent. É disparado quando um componente Swing leve é exibido. Desenha em um componente Swing. A sobrescrição de método permite criar desenhos personalizados. Ao sobrescrever o método, no entanto, deve-se primeiro chamar o método de superclasse quando sobrescrito, para assegurar que o componente será exibido corretamente. É em tal método que se verifica a transparência de um componente (por isso ele necessita ser disparado). Se um componente é transparente o método não limpará seu fundo quando o programa exibir o componente. Quando o componente for opaco, o método limpará o fundo antes de o componente ser exibido

63 125 Observação sobre aparência e comportamento A maioria dos componentes Swing GUI pode ser transparente ou opaca. Se um componente Swing GUI for opaco, seu fundo será limpo quando seu método paintcomponent() for chamado. Somente componentes opacos podem exibir uma cor de segundo plano personalizada. Os objetos JPanel são opacos por padrão. 126 Dica de prevenção de erro 11.1 No método paintcomponent() de uma subclasse JComponent, a primeira instrução deve ser sempre uma chamada para o método da superclasse paintcomponent() a fim de assegurar que um objeto da subclasse seja exibido corretamente. 63

64 127 Erro comum de programação 11.5 Se um método paintcomponent() sobrescrito não chamar a versão da superclasse, o componente de subclasse pode não ser exibido adequadamente. Se um método paintcomponent() sobrescrito chamar a versão da superclasse depois que outro desenho for realizado, o desenho será apagado. Definindo a área personalizada de desenho (exemplo das Figuras e Subclasse personalizada de JPanel: Oferece uma área de desenho personalizada. A classe Graphics é utilizada para desenhar nos componentes Swing. A classe Point representa uma coordenada x-y, podendo ser utilizada para armazenar as coordenadas de cada evento de arrastar do mouse

65 1 // Fig : PaintPanel.java 2 // Utilizando class MouseMotionAdapter. 3 import java.awt.point; 4 import java.awt.graphics; 5 import java.awt.event.mouseevent; 6 import java.awt.event.mousemotionadapter; 7 import javax.swing.jpanel; 8 9 public class PaintPanel extends JPanel 10 { 11 private int pointcount = 0; // número de contagem de pontos // array de referências java.awt.point 14 private Point points[] = new Point[ ]; // configura a GUI e registra handler de evento de mouse 17 public PaintPanel() 18 { 19 // trata evento de movimento de mouse do frame 20 addmousemotionlistener( 21 Cria array de Points PaintPanel.java (1 de 2) 129 Apresenta um aplicativo para realizar desenhos simples, com o auxílio do mouse, criando um JPanel personalizado. O array points[] é utilizado para armazenar a localização em que cada evento de arrastar do mouse ocorre. E esse array é utilizado para realizar o desenho. 22 new MouseMotionAdapter() // classe interna anônima 23 { 24 // armazena coordenadas de arrastar e repinta 25 public void mousedragged( MouseEvent event ) 26 { 27 if ( pointcount < points.length ) Sobrescreve o método mousedragged(), PaintPanel.java 28 { para capturar as coordenadas do mouse arrastado 29 points[ pointcount ] = event.getpoint(); // localiza ponto 30 pointcount++; // número de increment i de pontos no array 31 repaint(); // repinta JFrame 32 } // fim de if 33 } // fim do métodom mousedragged 34 } // fim da classe interna anônima 35 ); // fim da chamada para addmousemotionlistener 36 } // fim do construtor PaintPanel // desenha oval em um quadro delimitador de 4x4 no local especificado na janela 39 public void paintcomponent( Graphics g ) 40 { 41 super.paintcomponent( g ); // limpa a área de desenho // desenha todos os pontos no array 44 for ( int i = 0; ; i < pointcount; i++ ) 45 g.filloval( points[ i ].x, points[ i ].y, 4, 4 ); 46 } // fim do métodom paintcomponent 47 } // fim da classe PaintPanel Classe interna anônima para tratamento de evento (2 de 2) Obtém a localização do cursor do mouse Repinta o JFrame. A chamada de tal método indica que o componente deve ser atualizado na tela o mais rápido possível com uma chamada parapaintcomponent() de PaintPanel. Obtém as coordenadas x e y de Point 130 O método paintcomponent() irá desenhar uma pequena oval considerando cada ponto armazenado no array points, justamente gerando o desenho personalizado. 65

66 131 Observação sobre aparência e comportamento Chamar repaint() para um componente Swing GUI indica que o componente deve ser atualizado na tela o mais rápido possível. O fundo do componente GUI é limpo somente se o componente for opaco. Para o método JComponent setopaque() pode ser passado um argumento boolean indicando se o componente é opaco (true true) ou transparente (false false). Observação sobre aparência e comportamento O desenho em qualquer componente GUI é realizado com as coordenadas que são medidas a partir do canto superior esquerdo (0, 0) desse componente GUI, não do canto superior esquerdo da tela

67 1 // Fig : Painter.java 2 // Testando PaintPanel. 3 import java.awt.borderlayout; 4 import javax.swing.jframe; 5 import javax.swing.jlabel; 6 7 public class Painter 8 { 9 public static void main( String args[] ) 10 { 11 // cria JFrame 12 JFrame application = new JFrame( "A simple paint program" ); 13 Painter.java (1 de 2) 133 Trabalha com o JPanel personalizado criado no código anterior. 14 PaintPanel paintpanel = new PaintPanel(); // cria o painel de pintura 15 application.add( paintpanel, BorderLayout.CENTER ); // no centro 16 Cria uma instância do painel de desenho 17 // cria um rótulo e o coloca em SOUTH de BorderLayout personalizado e o adiciona à frame para 18 application.add( new JLabel( "Drag the mouse to draw" ), que o usuário possa desenhar. 19 BorderLayout.SOUTH ); application.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 22 application.setsize( 400, 200 ); // configura o tamanho do frame 23 application.setvisible( true ); // exibe o frame 24 } // fim de main 25 } // fim da classe Painter 134 Painter.java (2 de 2) 67

68 11.16 Tratamento de eventos de teclado Interface KeyListener: Para tratar eventos de teclado gerados quando as teclas no teclado são pressionadas e liberadas KeyEvents. Declara os métodoskeypressed() chamado quando uma tecla é pressionada -,keyreleased()- chamado quando uma tecla é liberada - e keytyped() chamado quando uma tecla que não é tecla de ação seja pressionada -, sendo que cada um recebe um KeyEvent como seu argumento. Para adicionar um KeyListener a um componente deve ser disparado o métodoaddkeylistener addkeylistener() (). Teclas de ação: As de setas, as de função, home, end, page up, page down, numlock, printscreen, scrolllock, capslock, pause // Fig : KeyDemoFrame.java 2 // Demonstrando os eventos de pressionamento de tecla. 3 import java.awt.color; Implementa a interface KeyListener. 4 import java.awt.event.keylistener; 5 import java.awt.event.keyevent; Destaque para o fato de que a própria 6 import javax.swing.jframe; frame já estará implementando a 7 import javax.swing.jtextarea; interface ouvinte, ao invés de se criar 8 uma classe separada 9 public class KeyDemoFrame extends JFrame implements KeyListener 10 { 11 private String line1 = ""; // primeira linha de textarea 12 private String line2 = ""; // segunda linha de textarea 13 private String line3 = ""; // terceira linha de textarea 14 private JTextArea textarea; // textarea a exibir saída // construtor KeyDemoFrame 17 public KeyDemoFrame() 18 { 19 super( "Demonstrating Keystroke Events" ); 20 Configura a cor do texto 21 textarea = new JTextArea( 10, 15 ); // configura JTextArea 22 textarea.settext( "Press any key on the keyboard..." ); 23 textarea.setenabled( false ); // disativa textarea 24 textarea.setdisabledtextcolor( Color.BLACK ); // configura cor de texto 25 add( textarea ); // adiciona textarea ao JFrame addkeylistener( this ); // permite que o frame processe e eventos de teclado 28 } // fim do construtor KeyDemoFrame 29 Neste exemplo a própria frame trata seus eventos de teclado. Um componente JTextArea é usado para exibição de texto. KeyDemoFrame.java (1 de 3) Aplicativo que demonstra tratamento de eventos do teclado 136 Registra a própria aplicação como um handler de evento, já que ela mesma contém a implementação do ouvinte 68

69 30 // trata pressionamento de qualquer tecla public void keypressed( KeyEvent event ) 32 { Declara o método keypressed() 33 line1 = String.format( "Key pressed: %s", 34 event.getkeytext( event.getkeycode() ) ); // gera saída de tecla pressionada 35 setlines2and3( event ); // configura a saída das linhas dois e três getkeycode() - Obtém o código KeyDemoFrame de tecla virtual da 36 } // fim do método keypressed tecla pressionada.java // trata liberação de qualquer tecla getkeytext() Obtém o texto da tecla cujo código (2 de 3) 39 public void keyreleased( KeyEvent event ) foi informado como argumento 40 { 41 line1 = String.format( t( "Key released: %s", Declara o método keyreleased() 42 event.getkeytext( event.getkeycode() ) ); // gera saída de tecla liberada 43 setlines2and3( event ); // configura a saída das linhas dois Obtém e três o código da tecla liberada 44 } // fim do método keyreleased // trata pressionamento sionamento de qualquer tecla de ação Declara o método keytyped() 47 public void keytyped( KeyEvent event ) 48 { 49 line1 = String.format( "Key typed: %s", event.getkeychar() ); 50 setlines2and3( event ); // configura saída das linhas dois e três 51 } // fim do método keytyped 52 Obtem o valor Unicode do caracter digitado. A classe KeyEvent mantém um conjunto de constantes (o código de tecla virtual) que representa cada tecla do teclado. Essas constantes podem ser comparadas com o valor de retorno de getkeycode() para testar as teclas individuais do teclado. 53 // configura segunda e terceira linhas de saída 54 private void setlines2and3( KeyEvent event ) 55 { 56 line2 = String.format( "This key is %san action key", 57 ( event.isactionkey()? "" : "not " ) ); Testa se é uma tecla de ação 58 KeyDemoFrame 59 String temp = event.getkeymodifierstext( event.getmodifiers() );.java 60 Determina se alguma tecla modificadora foi 61 line3 = String.format( "Modifier keys pressed: %s", pressionada (Shift, Alt, Ctrl) (3 de 3) 62 ( temp.equals( "" )? "none" : temp ) ); // envia modificadores para a saída 63 Determina o texto da(s) tecla(s) modificadora(s) 64 textarea.settext( String.format( "%s\n%s n%s\n%s n%s\n" n", pressionada(s). 65 line1, line2, line3 ) ); // gera saída de três linhas de texto 66 } // fim do método setlines2and3 67 } // fim da d a classe KeyDemoFrame 138 Além do uso de constantes de KeyEvent para determinar se uma determinada tecla foi pressionada também podem ser utilizados os seguintes métodos, que retornam valor booleano caso a tecla em questão tenha sido pressionada:isaltdown(), iscontroldown(), ismetadown(), isshiftdown(). 69

70 1 // Fig : KeyDemo.java 2 // Testando KeyDemoFrame. 3 import javax.swing.jframe; 4 5 public class KeyDemo 6 { 7 public static void main( String args[] ) 8 { 9 KeyDemoFrame keydemoframe = new KeyDemoFrame(); 10 keydemoframe.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); 11 keydemoframe.setsize( 350, 100 ); // configura o tamanho do frame 12 keydemoframe.setvisible( true ); // exibe o frame 13 } // fim de main 14 } // fim da classe KeyDemo KeyDemo.java (1 de 2) KeyDemo.java (2 de 2) 70

Componentes Parte 01

Componentes Parte 01 Componentes Parte 01 Prof. Edwar Saliba Júnior Setembro de 2012 1 Reflexão Merecemos a culpa por não termos facilitado o seu aprendizado. No tocante aos recursos, o produto era fantástico, mas no que se

Leia mais

Introdução à Tecnologia Java 02/2012. Java Aula 03. gráficas GUI Swing 29/08/2012. Celso Olivete Júnior.

Introdução à Tecnologia Java 02/2012. Java Aula 03. gráficas GUI Swing 29/08/2012. Celso Olivete Júnior. Java Aula 03 Continuação de interfaces gráficas GUI Swing 29/08/2012 Celso Olivete Júnior olivete@fct.unesp.br 1 GUIs e imagens gráficas: Criando desenhos simples Sistema de coordenadas do Java: Definido

Leia mais

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

TIC - Programação Visual. Componentes. Prof. Edwar Saliba Júnior Setembro de Unidade 14 Componentes 1 Componentes Prof. Edwar Saliba Júnior Setembro de 2012 Unidade 14 Componentes 1 Reflexão Merecemos a culpa por não termos facilitado o seu aprendizado. No tocante aos recursos, o produto era fantástico,

Leia mais

Arquivos. Prof. Leonardo Barreto Campos 1

Arquivos. Prof. Leonardo Barreto Campos 1 Arquivos Prof. Leonardo Barreto Campos 1 Sumário Introdução; A Classe File; Criando um arquivo de texto de acesso seqüencial; Exemplos de Interface; Lendo dados a partir de um arquivo de texto de acesso

Leia mais

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

AULA 10 - CCT0024 Linguagem de Programação Objetivos da aula. Janelas para leitura e exibição de textos AULA 10 - CCT0024 Linguagem de Programação Objetivos da aula Introduzir o conceito de interfaces gráficas (GUI) Apresentar os componentes Swing e sua hierarquia Criar interfaces gráficas com componentes

Leia mais

Componentes GUI: Parte 1. 2005 by Pearson Education do Brasil

Componentes GUI: Parte 1. 2005 by Pearson Education do Brasil 1 11 Componentes GUI: Parte 1 2 OBJETIVOS Neste capítulo, você aprenderá: Os princípios do projeto de interfaces gráficas com o usuário (graphical user interfaces GUIs). Como construir GUIs e tratar eventos

Leia mais

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2 BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2 Uma interface gráfica ou GUI (Graphical User Interface) fornece um mecanismo amigável para interagirmos com uma aplicação Look

Leia mais

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2013/1

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2013/1 BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2013/1 ! Polimorfismo)! Exemplo)! Classes)e)métodos)abstratos)! Exemplo)Polimorfismo)e)Downcast)! Resolução)Dinâmica)! Operador)instanceof*!

Leia mais

Interface gráfica em Java: Swing e SWT

Interface gráfica em Java: Swing e SWT Programação Orientada a Objetos Interface gráfica em Java: Swing e SWT UNIFEI 14/06/2012 Componentes gráficos em Java Os componentes gráficos em Java Componentes de desenho 2D e 3D Componentes de interface

Leia mais

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

Como tratar eventos - A interface ActionListener e o método actionperformed Se você parar para reparar, um aplicativo gráfico é como se fosse como um cardápio de um restaurante. Você chega, faz seus pedidos e suas ordens são atendidas. Cada pessoa vai fazer pedidos diferentes,

Leia mais

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

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing Programação III Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br Deitel Capítulo 11 : Imagens gráficas e Java 2D Capítulo 12 : Componentes Básicos Capítulo 13 : Componentes Avançados GUI

Leia mais

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

Aula 12 POO 1 Interface Gráfica no Java. Profa. Elaine Faria UFU Aula 12 POO 1 Interface Gráfica no Java Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem

Leia mais

Interface Gráfica. Disciplina: Desenvolvimento de Sistemas. Professor: Thiago Silva Prates

Interface Gráfica. Disciplina: Desenvolvimento de Sistemas. Professor: Thiago Silva Prates Interface Gráfica Disciplina: Desenvolvimento de Sistemas Professor: Thiago Silva Prates Interface Gráfica Interface Gráfica com Usuário (do inglês, Graphical User Interface GUI) apresenta um mecanismo

Leia mais

MÓDULO 4 SWING Parte 3

MÓDULO 4 SWING Parte 3 Aplicações de Linguagem de Programação Orientada a Objetos 2ºsem/2011 (Professores: Tiago e Daniele) // Exemplo11 Ação do Mouse import javax.swing.*; import java.awt.*; import java.awt.event.actionevent;

Leia mais

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

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof. Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof. Renato Pimentel Laboratório 10 Interface gráfica Atividade individual. 1 Introdução

Leia mais

Componentes Parte 02

Componentes Parte 02 Componentes Parte 02 Prof. Edwar Saliba Júnior Setembro de 2012 1 Botões que Mantêm o Estado Botões de estado: O Swing contém três tipos de botões de estado: JToggleButton, JCheckBox e JRadioButton. JCheckBox

Leia mais

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

Aula 15 Interface Gáfica. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes Aula 15 Interface Gáfica Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Interface gráfica em Java: Swing. Java Foundation Classes

Leia mais

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho O que é Microsoft Excel? Microsoft Excel O Microsoft Excel é um programa para manipulação de planilhas eletrônicas. Oito em cada dez pessoas utilizam o Microsoft Excel pra trabalhar com cálculos e sistemas

Leia mais

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

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 1- Interfaces Gráficas com Swing Aula 1- Interfaces Gráficas com Swing Conteúdo Programático desta aula Explorar o pacote Swing para desenvolver Interfaces em Java Utilização de Interfaces gráficas para interagir com objetos previamente

Leia mais

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

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo Programação Java Construção de Interface gráfica Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Processo Básico: OO + Eventos Instanciar os componentes de interface por exemplo,

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Professor: Diego Oliveira Conteúdo 19: Interface Gráfica 2 Componentes Sabemos que uma janela do Java (JFrame) pode possuir diversos componentes Cada um desses componentes

Leia mais

Swing Módulo II. Tiago Alves de Oliveira. Tiago Alves de Oliveira 1

Swing Módulo II. Tiago Alves de Oliveira. Tiago Alves de Oliveira 1 Swing Módulo II Tiago Alves de Oliveira Tiago Alves de Oliveira 1 Componentes GUI Componentes Swing GUI: 1.Declarado no pacote javax.swing. 2.A maioria dos componentes Swing são componentes Java puros,

Leia mais

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

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 Componentes GUI GUI Grafical User Interface São construídas a partir de componentes GUI chamados de controles ou widgets (windows gadgets engenhocas de janela). Ex: JOptionPane fornece caixas de diálogos

Leia mais

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

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Nona aula Programação Orientada a Objetos II Java Nona aula 1 Programação Orientada a Objeto II Interface Gráfica AWT E SWING Criação de interfaces gráficas básicas Exercícios 2 Interface gráfica em Java As aplicações

Leia mais

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

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico Prof. Esp. André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java/aulajava07a09.pptx Existe grande quantidade de funcionalidades

Leia mais

COM220 Aula 17: Interface Gráfica Containers Swing

COM220 Aula 17: Interface Gráfica Containers Swing COM220 Aula 17: Interface Gráfica Containers Swing Prof. Laércio Baldochi Containers Swing Janelas JFrame Painéis JPanel Applets JApplet Caixas de diálogo JDialog JOptionPane JFrame Componente principal

Leia mais

Linguagem de Programação II GUI Interface Gráfica com o Usuário

Linguagem de Programação II GUI Interface Gráfica com o Usuário Linguagem de Programação II Interface Gráfica com o Usuário Prof. Alessandro Borges 2 Tópicos Introdução Visão Geral dos Componentes Swing Criação de interface no Netbeans Tipos comuns de eventos 3 Introdução

Leia mais

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

Criando interfaces com o usuário. Continuação Criando interfaces com o usuário Continuação A diferença básica entre um objeto Window e um objeto JFrame é que o JFrame representa a janela principal de uma aplicação e o Window apenas uma janela a mais.

Leia mais

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

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1 Aula de Revisão para AV1 Conteúdo Programático desta aula Rever os principais conceitos apresentados Resolução de Exercícios para a prova Quantas bibliotecas de GUI existem em Java: a) Uma: Swing b) Duas:

Leia mais

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

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1 Aula de Revisão para AV1 Conteúdo Programático desta aula Rever os principais conceitos apresentados Resolução de Exercícios para a prova 1) Assinale Verdadeiro (V) ou Falso (F): (PR2 2006/1) ( ) Cada

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 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

Leia mais

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

Java Foundation Classes Coleção de pacotes para criação de aplicações completas Desktop Interfaces gráficas (GUIs- Graphical User Interface) Interface Gráfica Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos JFC Java Foundation Classes Coleção de pacotes para criação de aplicações completas Desktop Interfaces gráficas

Leia mais

Interfaces Gracas em Java

Interfaces Gracas em Java Interfaces Gracas em Java Sumario I SWING eneralidades I Componentes e Contentores I Modelo de eventos I Gestores de Colocac~ao I Componentes e Contentores com exemplos Biblioraa I The Java Tutorial, Trail:

Leia mais

Aula 2 Eventos do Mouse by Pearson Education do Brasil

Aula 2 Eventos do Mouse by Pearson Education do Brasil 1 11 Aula 2 Eventos do Mouse 11.13 Tratamento de evento de mouse 2 Eventos de mouse: Cria um objeto MouseEvent. Tratado por MouseListeners e MouseMotionListeners. MouseInputListener combina as duas interfaces.

Leia mais

Interfaces Gráficas (GUIs) em Java usando Swing

Interfaces Gráficas (GUIs) em Java usando Swing 1 Interfaces Gráficas (GUIs) em Java usando Swing Componentes Atômicos São elementos ou componentes que não permitem conter outros elementos. Podemos citar, dentre outros, botões, labels, textfields, sliders,

Leia mais

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener Interface Gráfica Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Agenda Componente JOptionPane Layout Null Tratamento de Eventos Action Listener Componente JOptionPane javax.swing.joptionpane

Leia mais

Elaborando as Interfaces Aulas 43, 44 e 45

Elaborando as Interfaces Aulas 43, 44 e 45 Elaborando as Interfaces Aulas 43, 44 e 45 RESOLUÇÃO DOS EXERCÍCIOS, MÉTODOS E JPROGRESSBAR Prof. André Aparecido da Silva Disponível em: http://www.oxnar.com.br/2017/3ati Aulas 43, 44 E 45. 1 ATIVIDADE

Leia mais

2.1 Dê duplo clique com o botão esquerdo do mouse sobre o instalador.

2.1 Dê duplo clique com o botão esquerdo do mouse sobre o instalador. 1 Baixando o Player 4YouSee O programa de instalação do Player 4YouSee para Windows está disponível para download na página: http://www.4yousee.com.br/instalar_player_4yousee_-_v2.0.4425.exe 2 Instalando

Leia mais

Microsoft Powerpoint 2003

Microsoft Powerpoint 2003 Microsoft Powerpoint 2003 O Microsoft PowerPoint é um programa que integra o pacote Office da Microsoft e é utilizado para efetuar apresentações gráficas atrativas e eficazes, no sistema operacional Windows.

Leia mais

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

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 4- Tratamento de Eventos em Interfaces Gráficas Aula 4- Tratamento de Eventos em Interfaces Gráficas Conteúdo Programático desta aula Manipular de Fontes, cursores, bordas, Compreender os modelos de tratamentos de eventos Utilizar os tratamentos de

Leia mais

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

Programação Gráfica em Java Alguns Componentes javax.swing Programação Gráfica em Java Alguns Componentes javax.swing Objetivo: Ao final da aula o aluno deverá ser capaz de empregar alguns componentes visuais do pacote javax.swing para produzir interfaces gráficas.

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos Componentes: JLabel, JTextFielde JButton Container / Layout Gil Eduardo de Andrade Componentes Gráficos: Container A classe Container (import java.awt.container) A ideia decontainer,

Leia mais

O QUE É O CALC PLANILHAS ELETRÔNICAS O Calc é um programa que trabalha com planilhas.

O QUE É O CALC PLANILHAS ELETRÔNICAS O Calc é um programa que trabalha com planilhas. O QUE É O CALC PLANILHAS ELETRÔNICAS O Calc é um programa que trabalha com planilhas. INICIANDO Vamos iniciar o BrOffice.org Planilha utilizando o caminho: Aplicações/ Escritório/ Planilhas (oocalc). A

Leia mais

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

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education Java Como Programar, 8/E Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Uma interface gráfica com usuário (graphical user interface GUI) apresenta um mecanismo amigável ao usuário para interagir com um aplicativo.

Leia mais

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

Introdução à Programação Gráfica em Java Introdução à Programação Gráfica em Java U N I V E R S I D A D E T E C N O L Ó G I C A F E D E R A L D O P A R A N Á D E P A R T A M E N T O A C A D Ê M I C O D E E L E T R Ô N I C A P R O F. V I T O R

Leia mais

sumário CAPÍTULO 01 CAPÍTULO 02 CAPÍTULO 03 CAPÍTULO 04 CAPÍTULO 05 CAPÍTULO 06 CONHECENDO CORELDRAW X7...15 régua, linhas-guia e grade...

sumário CAPÍTULO 01 CAPÍTULO 02 CAPÍTULO 03 CAPÍTULO 04 CAPÍTULO 05 CAPÍTULO 06 CONHECENDO CORELDRAW X7...15 régua, linhas-guia e grade... Graphics Suite INTRODUÇÃO O CorelDraw X7 é um programa desenvolvido originalmente para a criação de desenhos vetoriais, que proporciona aos designers uma experiência de trabalho agradável. O programa foi

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos Componentes: JCheckBoxe JRadioButton JPanel / ButtonGroup/ ItemListener Gil Eduardo de Andrade Componentes Gráficos: JCheckBox A classe JCheckBox (import java.swing.jcheckbox) A classe

Leia mais

Utilizando a guia Inserir

Utilizando a guia Inserir Utilizando a guia Inserir Inserir um clip-art... 2 Inserir uma imagem a partir de um arquivo... 3 Inserir uma imagem a partir de uma página da Web... 3 Formatando uma imagem ou clip-art... 4 Posicionar

Leia mais

Elaborando as Interfaces Aulas 31, 32 e 33

Elaborando as Interfaces Aulas 31, 32 e 33 Elaborando as Interfaces Aulas 31, 32 e 33 JList e JComboBox Prof. André Aparecido da Silva Disponível em: http://www.oxnar.com.br/2017/3ati Aulas 31, 32 e 33. 1 ATIVIDADE DA SEMANA PASSADA ELABORE UMA

Leia mais

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

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1. 9ª LISTA DE EXERCÍCIOS INTERFACES GRÁFICAS DE USUÁRIO Disciplina: PC-II Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1. Figura 1.1: Primeira

Leia mais

MANIPULAÇÃO DE EVENTOS

MANIPULAÇÃO DE EVENTOS MANIPULAÇÃO DE EVENTOS Ao término desse capítulo você terá aprendido: Tipos de eventos; Manipulação de eventos de componentes; Manipulação de eventos do mouse; Manipulação de eventos do teclado; Interfaces

Leia mais

Interfaces Gracas em Java

Interfaces Gracas em Java Interfaces Gracas em Java Sumario I SWING generalidades I Componentes e Contentores I Modelo de eventos I Gestores de Colocac~ao I Componentes e Contentores com exemplos Rui Camacho Bibliograa I The Java

Leia mais

Apresentação do Microsoft Excel

Apresentação do Microsoft Excel Aula 03 Apresentação do Microsoft Excel Microsoft Excel é um programa desenvolvido para trabalhar com cálculos feitos em planilhas eletrônicas, desenvolvimento de gráficos e controlador de banco de dados.

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Pacotes: Swing, AWT Janelas de diálogo: JOptionPane Formulários: JFrame Etiquetas: JLabel Caixas de texto simples: JTextField Botões: JButton Menus: JMenuXXX Tratamento

Leia mais

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

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade Page 1 API A API renderiza/desenha por conta própria todos os componentes visuais, ao invés de delegar essa tarefa ao sistema operacional, como a maioria das outras APIs de interface gráfica trabalham.

Leia mais

Pacote Java Swing Parte 1

Pacote Java Swing Parte 1 Pacote Java Swing Parte 1 José Gustavo de Souza Paiva Introdução GUI (Graphical User Interface) Mecanismo amigável ao usuário para interagir com um aplicativo Proporciona a um aplicativo uma aparência

Leia mais

Aula 2 Even e to t s d o M ouse

Aula 2 Even e to t s d o M ouse Aula 2 Eventos do Mouse Sumário Considerações iniciais Elementos de uma aplicação Principais tipos de eventos em Java: (WindowEvent, MouseEvent, ActionEvent, KeyEvent) Capturando os eventos: Definindo

Leia mais

Interface Gráfica - Swing

Interface Gráfica - Swing Interface Gráfica - Swing 1 'Botão de opção' (JRadioButton) p O componente 'Botão de opção', também conhecido como RadioButton, é utilizado para você selecionar uma e somente uma opção entre várias oferecidas

Leia mais

Conhecimentos Básicos de Computação e Microinformática

Conhecimentos Básicos de Computação e Microinformática Conhecimentos Básicos de Computação e Microinformática Sempre que nos referimos a computadores, temos em mente o que vamos usar para manipular os dados e através do que vamos executá-los para chegar ao

Leia mais

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

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em:  Aulas 16, 17, e 18 Elaborando Interfaces Prof. André Aparecido da Silva Disponível em: http://www.oxnar.com.br/2017/3ati Aulas 16, 17, e 18 1 Todos os componentes JLabel JTextField JButton Além do próprio JFrame2 Todos os

Leia mais

Tiago Alves de Oliveira. Tiago Alves de Oliveira

Tiago Alves de Oliveira. Tiago Alves de Oliveira Tiago Alves de Oliveira 1 Tiago Alves de Oliveira Os containers que encontramos no Swing são os objetos que irão hospedar e organizar os outros componentes, como botões, edits, labels, etc... Swing possui

Leia mais

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

(INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA) (INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA) Ferramenta 1 -NetBeans 8.1 GUI Elaborado por: Osmar de Oliveira Braz Junior Descrição

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do

Leia mais

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

Programação Orientada a Objetos com Java. Prof. Júlio Machado Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br INTERFACE GRÁFICA Interface Gráfica Os elementos básicos necessários para criar um GUI (Graphical User Interface - Interface

Leia mais

Excel. Profª Leticia Lopes Leite

Excel. Profª Leticia Lopes Leite Excel Profª Leticia Lopes Leite 1 Introdução A planilha eletrônica consiste em uma poderosa ferramenta de apoio à gestão e ao processo de tomada de decisão, dentro de uma empresa ou na vida particular.

Leia mais

MICROSOFT OFFICE EXCEL 2007

MICROSOFT OFFICE EXCEL 2007 MICROSOFT OFFICE EXCEL 2007 ÍNDICE CAPÍTULO 1 INICIANDO O EXCEL...7 CONHECENDO A TELA DO EXCEL...7 CAPÍTULO 2 PLANILHA...13 CÉLULAS...13 COMO SELECIONAR CÉLULAS...14 CAPÍTULO 3 INICIANDO A DIGITAÇÃO DE

Leia mais

Prof.ª: Dr. Maria Lúcia Pozzatti Flôres Organização: Gilberto Raitz Junior

Prof.ª: Dr. Maria Lúcia Pozzatti Flôres Organização: Gilberto Raitz Junior Prof.ª: Dr. Maria Lúcia Pozzatti Flôres Organização: Gilberto Raitz Junior O Excel é um programa que nos permite criar planilhas inteligentes. Ele reconhece as informações digitadas e com elas realiza

Leia mais

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch Switch A estrutura if de seleção única, a estrutura if / else de seleção dupla. Outra maneira de indicar uma condição é através de uma declaração switch. A construção switch permite que uma única variável

Leia mais

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação 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 Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans Roteiro Introdução Conceitos de Oientação a Objetos A Linguagem Java NetBeans (www.netbeans.org) Fernando Vieira Paulovich paulovic@icmc.usp.br

Leia mais

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Graphical user Interfaces Objetivos:. Construir programas com interfaces gráficas Graphical User Interface (GUI) application programs - Utilizar as classes JFrame, JButton, JLabel, ImageIcon, JTextField,

Leia mais

WordPress Institucional UFPel Manual do tema UFPel 2.0

WordPress Institucional UFPel Manual do tema UFPel 2.0 GABINETE DO REITOR COORDENAÇÃO DE TECNOLOGIA DA INFORMAÇÃO NÚCLEO DE SISTEMAS DE INFORMAÇÃO SEÇÃO DE TECNOLOGIAS PARA WEBSITES WordPress Institucional UFPel Manual do tema UFPel 2.0 Versão 2.3 Maio de

Leia mais

MREditor Editor de Impressos

MREditor Editor de Impressos MEDSYSTEM S/V Departamento de Desenvolvimento MREditor Editor de Impressos Poços de Caldas LISTA DE FIGURAS FIGURA 1 Tela Principal... 7 FIGURA 2 Barra de Ferramentas... 8 FIGURA 3 Botão Novo... 8 FIGURA

Leia mais

AULA 3 Trabalhando com apresentações do Microsoft PowerPoint

AULA 3 Trabalhando com apresentações do Microsoft PowerPoint AULA 3 Trabalhando com apresentações do Microsoft PowerPoint Olá caro estudante! Nessa aula estudaremos os aspectos relacionados a apresentações do Microsoft PowerPoint. Esse item é muito importante e

Leia mais

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

Centro Federal de Educação Tecnológica do Amazonas. Java Avançado Prof. Tiago Eugenio de Melo Centro Federal de Educação Tecnológica do Amazonas Java Avançado Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Sumário Exceção Arquivos GUI EXCEÇÕES Exceção O que é exceção? É uma indicação de um

Leia mais

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

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos 1. Para a construção de uma aplicação gráfica se faz necessário conceber a interface de aplicação, identificando-se

Leia mais

Formatar parágrafos no Word 2007/2010

Formatar parágrafos no Word 2007/2010 Formatar parágrafos no Word 2007/2010 Na aba Início em parágrafo contém um grupo de atalhos da configuração dos parágrafos, mas se precisar de algo mais avançado, como escolher as configurações de forma

Leia mais

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

Aplicação Linguagem de Programação Orientada a Objeto Aplicação Linguagem de Programação Orientada a Objeto ALPOO 02 - Swing Prof. Msc Wanderley Gonçalves Freitas Agenda Telas de mensagem - apresentar as principais telas de mensagens Containers o conceito

Leia mais

IDE (Integrated Development Environment) / RAD (Rapid Application Development)

IDE (Integrated Development Environment) / RAD (Rapid Application Development) IDE (Integrated Development Environment) / RAD (Rapid Application Development) Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Agosto de 2012 Prof. Edwar Saliba Júnior 1 Introdução

Leia mais

Podemos também definir o conteúdo dos menus da página inicial. Clique em Menus, Main Menu.

Podemos também definir o conteúdo dos menus da página inicial. Clique em Menus, Main Menu. Podemos também definir o conteúdo dos menus da página inicial. Clique em Menus, Main Menu. Como padrão será mostrado o Menu Home. Ao clicar em Home, podemos definir como deverão ser mostrados os conteúdos

Leia mais

GERAÇÃO DE CURVAS DE NÍVEL

GERAÇÃO DE CURVAS DE NÍVEL GUIA PRÁTICO DataGeosis Versão 2.3 GERAÇÃO DE CURVAS DE NÍVEL Paulo Augusto Ferreira Borges Engenheiro Agrimensor Treinamento e Suporte Técnico 1. INTRODUÇÃO O DataGeosis permite o cálculo das curvas de

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos 1. Manipulando Atributos Podemos alterar ou acessar os valores guardados nos atributos de um objeto se tivermos a referência a esse objeto. Os atributos são acessados pelo nome. No

Leia mais

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

Java First-Tier: Aplicações. Abstract Window Toolkit (AWT) Construção de Interfaces com Swing (I) Swing: Características Java First-Tier: Aplicações Construção de Interfaces com Swing (I) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Abstract Window Toolkit (AWT) Peer-based Delega ao toolkit nativo

Leia mais

Java Standard Edition (JSE)

Java Standard Edition (JSE) Java Standard Edition (JSE) Capítulo 09. Swing básico Esp. Márcio Palheta MSN: marcio.palheta@hotmail.com 1 Novos recursos a aprender Interfaces gráficas; Portabilidade; O pacote do Swing; Primeiro projeto

Leia mais

Java Swing: Netbeans

Java Swing: Netbeans Java Swing: Netbeans Swing Atualmente, o Java suporta, oficialmente, dois tipos de bibliotecas gráficas:awt e Swing. A AWT foi a primeira API para interfaces gráficas a surgir no Java e foi, mais tarde,

Leia mais

Cartilha de Acesso Rápido

Cartilha de Acesso Rápido Cartilha de Acesso Rápido (UTILIZAÇÃO SIL) Como criar um Layout na tela APRESENTAÇÃO: O SIL SISTEMA INTEGRADO DE LOGÍSTICA é uma ferramenta capaz de gerar diferenciais competitivos estratégicos ao proporcionar

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 03 GUI e Swing Edirlei Soares de Lima GUI Graphical User Interface A API Java fornece diversas classes destinadas a criação de interfaces gráficas.

Leia mais

Manual do Usuário. Quiz Online

Manual do Usuário. Quiz Online Manual do Usuário Quiz Online Versão 1.0.1 Copyright 2013 BroadNeeds Rev. 2014-06-20 Página 1 de 17 1 - INTRODUÇÃO... 3 1.1 REQUISITOS... 3 2 - CRIANDO O QUIZ ATRAVÉS DA PLATAFORMA NUCLEOMEDIA... 4 2.1

Leia mais

Atualização de Software Guia do Usuário

Atualização de Software Guia do Usuário Atualização de Software Guia do Usuário Copyright 2009 Hewlett-Packard Development Company, L.P. Windows é uma marca registrada da Microsoft Corporation nos Estados Unidos. As informações contidas neste

Leia mais

Com uma melhoria no visual o sistema conta com novidades e alguns aprimoramentos nos recursos já existentes.

Com uma melhoria no visual o sistema conta com novidades e alguns aprimoramentos nos recursos já existentes. O Microsoft Windows XP traz maior estabilidade e segurança com um sistema operacional que aposentarde vez o velho MS-DOS. Esta nova versão herda do Windows NT algumas qualidades que fazem do XP a melhor

Leia mais

PROVA DE NOÇÕES DE INFORMÁTICA

PROVA DE NOÇÕES DE INFORMÁTICA 16 PROVA DE NOÇÕES DE INFORMÁTICA QUESTÃO 51: Em um computador com o sistema operacional Windows 2000, um usuário possui a seguinte configuração de permissões sobre um arquivo: As opções abaixo representam

Leia mais

Interfaces Gráficas com Swing. Professor Leonardo Larback

Interfaces Gráficas com Swing. Professor Leonardo Larback Interfaces Gráficas com Swing Professor Leonardo Larback SWING Swing é um widget toolkit para uso em Java. Surgiu como sucessor do Abstract Window Toolkit (AWT) à partir do java 1.2. Como uma das principais

Leia mais

Programação Orientada a Objetos II

Programação Orientada a Objetos II Programação Orientada a Objetos II Interfaces Gráficas Componentes Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com www.bolinhabolinha.com Ementa Introdução ao Desenvolvimento de Interfaces Gráficas Herança

Leia mais

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

Agenda. JFC (Java FoundaNon Classes) Interfaces Gráficas: layout manager JFC. Componentes do Swing. Pluggable Look and Feel Agenda Interfaces Gráficas: layout manager joao@ecomp.uefs.br JFC (Java FoundaNon Classes) Swing componentes Gerênciamento de Layout BoderLayout, FlowLayout,... Departamento de Ciências Exatas Universidade

Leia mais

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

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos Chegamos à interface com o usuário. Você já utilizou alguns métodos para dialogar com o usuário, quer enviando mensagens quer lendo dados.

Leia mais

Curso Câmera Cotidianaa

Curso Câmera Cotidianaa Curso Câmera Cotidianaa TAREFA: Remix de vídeos do YouTube com o editor online do YouTube - Selecionar dois ou mais vídeos no YouTube para serem remixados num vídeo só. - Selecionar alguma trilha dentre

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 5- Tratamento de Eventos de Manipulação de textos

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 5- Tratamento de Eventos de Manipulação de textos Aula 5- Tratamento de Eventos de Manipulação de textos Conteúdo Programático desta aula Compreender a manipulação de eventos de texto, frequentemente relacionados à validação de caracteres inseridos através

Leia mais

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

Programação Orientada a Objetos em Java. GUI Graphical User Interface Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java GUI Graphical User Interface Professor: César Melo Slides baseados

Leia mais

Diário Oficial Digital. Sistema web para pesquisa de mátérias Manual do usuário

Diário Oficial Digital. Sistema web para pesquisa de mátérias Manual do usuário Diário Oficial Digital Sistema web para pesquisa de mátérias Manual do usuário Conhecendo a consulta online Apresentação 3 Pré-requisitos 3 Navegando nas edições do jornal Acessando a última edição disponível

Leia mais

Tutorial Autodesk Inventor Sheet Metal

Tutorial Autodesk Inventor Sheet Metal Tutorial Autodesk Inventor Sheet Metal Flange transitada Esboço A operação Flange transitada proporciona uma forma de criar seções de transição no modelo. Elas podem ser a única operação (ou a operação

Leia mais

Atualizações de Software Guia do Usuário

Atualizações de Software Guia do Usuário Atualizações de Software Guia do Usuário Copyright 2007 Hewlett-Packard Development Company, L.P. Windows é uma marca registrada da Microsoft Corporation nos Estados Unidos. As informações contidas neste

Leia mais