LP_Aula20 Interfaces Gráficas com Swing 1. Objetivos Demonstrar o funcionamento das principais classes do pacote swing para a criação de Interface Gráfica do usuário Identificar os principais objetos presentes nas janelas de uma aplicação em Java, tais como botões, campos texto, painéis de rolagem, lista de múltipla escolha, entre outros; Demonstrar a utilização de diversos tipos de caixa de mensagens e menus de barra e suspensos; Fornecer uma serie de informações que permite desenvolver a maioria das interfaces gráficas necessárias em uma aplicação Desenvolver a capacidade de abstrair uma necessidade de entrada e saída de dados de uma aplicação, transformando-a numa interface gráfica. 2. Definições A utilização de classes disponíveis no Java para o desenvolvimento de interfaces gráficas, conhecidas inicialmente como AWT – ABSTRACT WINDOW TOOLKIT. Com o desenvolvimento da linguagem Java, o AWT foi substituído pelo swing pertencente à biblioteca JFC (Java Foundation Classes), portanto o swing é uma extensão das classes da AWT. Por esse motivo, vamos dar o enfoque às classes do swing que possuem diversas vantagens e muitos aprimoramentos em relação às classes da AWT – melhor aparência, melhor tratamento de eventos, recursos estendidos, entre outros. A diferença básica entre as classes do swing em relação às do pacote awt esta na presença da letra J antes do inicio do nome da classe. Por exemplo, para inserir um botão do pacote awt, é usada a classe Button, já para inserir um botão do pacote swing, é usada a classe JButton. O mesmo vale para as classes do swing, pois todas iniciam com J. As aplicações gráficas são aquelas que possibilitam a criação de um GUI (GraphicalUser Interface – Interface Gráfica do Usuário). Ao desenvolver uma aplicação dotada de uma GUI, é necessário definir quais componentes (objetos) serão utilizados e a disposição que eles terão na janela. O swing possui inúmeras classes que podem ser utilizadas na construção da GUI. Neste ponto, a linguagem começa a ficar interessante, pois as aplicações são criadas a partir de janelas gráficas. Ao projetar uma aplicação gráfica, é necessário definir todos os componentes que serão utilizados, seus objetivos e sua posição na janela. Vamos utilizar os componentes mais utilizados na criação de interfaces gráficas sem ainda se preocupar com questão de arquitetura. Um componente da GUI é um objeto visual (criado a partir de uma classe Java) que possibilita realizar a interação com a aplicação por meio do mouse e teclado. Os componentes mais comuns são etiquetas, botões, caixa de texto, painéis de rolagem, menus, objetos de múltipla escolha, entre outros. Conforme será apresentado, cada um dos componentes possui propriedades que podem ser alteradas em tempo de desenvolvimento ou execução (cor, tamanho, fonte etc), assim como outras linguagens de programação. As classes do swing são extensões do pacote awt que, por sua vez, são extensões da classe java.lang.Object, a superclasse de todas as classe do Java. Além dos pacotes de classes da awt e swing, existem ainda outras formas de criar interface em Java. Linguagem de Programação Página 1 LP_Aula20 Todas as classes elaboradas em nosso estudo necessitam de diversas classes externas tanto do pacote swing como do awt. Na maioria dos exemplos, as classes terão pelo menos três linhas com a diretiva import apontando para pacotes de classes externas, conforme as declarações seguintes: importjava.awt.*; ->Permite a utilização de diversas classes do pacote awt, além de possuir uma serie de constantes numéricas. importjava.awt.event; ->Usado para o processamento dos eventos que ocorrem na janela, tais como clique do mouse. importjava.swing.*; ->Permite a utilização de diversas classes do pacote swing. Criação de Frames Para criar frames utilizaremos à classe JFrame disponível no pacote swing, a qual fera uma janela com barra de titulo, bordas e pode ter outros componentes visuais (objetos) em seu interior. Vamos criar uma aplicação MDI (multipledocument interface), em que todas as telas do sistemas apareceram dentro de uma única janela; no cas cada aplicação sera um painel a ser adicionado ao frame principal. Antes de apresentar primeiro exemplo, vamos descrever algumas funcionalidades das classes do pacote swing que será usada: JLabel, JTextField, JPassowordField e JButton. Classe JLabel A classe JLabel permite definir um texto que pode ser adicionado a um outro componente (frame, painel etc.). Podem ser definidas várias propriedades para esse texto, tais como alinhamento, tipo de letra, tamanho, cor etc. uma possível sintaxe para a declaração e a criação de um objeto JLabel é: JLabel<nome do objeto> = new JLabel(“<texto do label>” , JLabel.<alinhamento>); Exemplo: JLabellbNome = new JLabel(“Nome”, JLabel.RIGHT); Este exemplo cria um objeto chamado lbNome contento o texto “Nome”, alinhado à direita. A tabela abaixo apresenta um resumo dos principais métodos disponíveis na classe JLabel. Método JLabel() JLabel(String) JLabel(String, int) JLabel(String, Image) JLabel(String, Image, int) getText() setText() Função Cria um Label vazio (sem texto) Cria um Label com texto dados Cria um Label com texto e o alinhamento dado Cria um Label com texto e a imagem dada Cria um Label com texto, a imagem e o alinhamento dado Obtém o texto do Label Especifica o texto do Label Classe JTextField A classe JTextField permite criar uma caixa de texto gráfica em que o usuário pode digitar dados. Assim como JLabel, existem diversas propriedades cujos conteúdos podem ser modificados. Uma possível sintaxe para a declaração e criação de um objeto JTextField é : JTextField<nome do objeto> = new JTextFiled(); Linguagem de Programação Página 2 LP_Aula20 Exemplo: JTextFieldtfNome = new JTextField(); Este exemplo cria um objeto chamando tfNome com conteúdo em branco. A tabela abaixo apresenta um resumo dos principais métodos disponíveis na classe JTextField. Método JTextField() JTextField(String) JTextField(String, int) JTextField(int) getText() getSelectedText() isEditable() selectAll() setEditable(boolean) setText() Função Cria uma caixa de texto vazia Cria uma caixa de texto com a string dada Cria uma caixa de texto com a string e a quantidade de colunas especificadas Cria uma caixa de texto com a quantidade de colunas especificadas Obtém o texto do objeto Obtém o texto selecionado no objeto Verifica se o componente é editável ou não Seleciona todo o texto Especifica se o componente é editável ou não Especifica o texto contido no componente Classe JPasswordField De uma forma semelhante à JTextField, a classJPasswordField permite criar um componente visual em que o usuário digita os caracteres, porem eles são substituídos (visualmente) por outro caractere. O funcionamento da classe JPasswordField é praticamente o mesmo da classe JTextField, a diferença é que o caractere digitado é substituído por outro para ocultar a senha digitada. O caractere default que aparece no momento da digitação é o asterisco (*), entretanto qualquer caractere pode ser definido pelo método setEchoChar. Uma possível sintaxe para a declaração e criação de um objeto JPasswordField é: JPasswordField<nome do objeto> = new JPasswordField(); Exemplo: JPasswordFieldpfSenha = new JPasswordField(); Este exemplo cria um objeto chamadopfSenha com conteúdo em branco. A tabela abaixo apresenta um resumo dos principais métodos disponíveis na classe JPasswordField: Método JPasswordField() JPasswordField (String) JPasswordField (int) getPasswordField() getEchoChar() setEchoChar() Função Cria uma caixa de texto vazia Cria uma caixa de texto com a string dada Cria uma caixa de texto com a quantidade de colunas especificadas Obtém o texto do objeto, porem retornando um array do tipo char. Cada caractere é armazenado num elemento do array Obtém o caractere usado na substituição dos caracteres digitados Define o caractere a se usado em substituição aos caracteres digitados Classe JButton A classe JButton permite a criação de botões gráficos a serem adicionados em outros componentes gráficos (como frames e painéis). Um botão pode ser criado com apenas um texto e/ou com Linguagem de Programação Página 3 LP_Aula20 ícones para tomar o ambiente mais intuitivo. Vamos criar neste primeiro momento da maneira mais simples. Uma possível sintaxe para a declaração e criação de um objeto JButton é: JButton<nome do objeto> = new JButton(); Exemplo: JButtonbtCalcular = new JButton(); Método JButton() JButton(String) JButton(String, Image) getText() setText(String) setEnabled(boolean) setHorizontalTextPosition() setMnemonic(char) setTootTipText(String) setVerticalTextPosition() Função Cria um botão sem texto Cria um botão com o texto dado Cria um botão com o texto e a imagem dada Obtém o texto do botão Especifica o texto do botão Define se o botão está habilitado (true) ou desabilitado (false) Define o tio de alinhamento horizontal do texto em relação a uma imagem. Pode assumir LEFT (esquerda) ou RIGHT (direita) Define uma letra que será usada como acionadora do evento clique em conjunto com a tecla ALT Possibilita atrelar uma mensagem ao botão. Quando o ponteiro do mouse estaciona sobre o botão, a mensagem é apresentada Define o tipo de alinhamento vertical do texto em relação a uma imagem. Pode assumir TOP (topo) ou BOTTOM (abaixo) O Frame Login O primeiro exemplo simula uma tela de login para entrada no sistema. O usuário fornece login e senha e, caso esteja corretos, é apresentada a tela principal do sistema. Antes de iniciar, devemos compreender que nem todas as funcionalidades serão explicadas em detalhes. A cada exemplo, e no momento oportuno, são fornecidas outras informações referentes aos componentes gráficos. Segue o código no link abaixo: http://www.professores.info/downloads/atividades/inf2a/AulaTela.zip Linguagem de Programação Página 4