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 Coleção de pacotes para criação de aplicações completas Desktop: Servem para construir Interfaces Gráficas com o Usuário (GUIs - Graphical User Interface); Funcionalidade e interatividade. Disponibiliza duas bibliotecas de interface gráfica: AWT; Swing. Swing Biblioteca oficial da Java GUI Principais Características: javax.swing.* Independente de plataforma; Personalizável; Extensível; Configurável; Leve. A principal vantagem de utilizer swing é que a aplicação terá a mesma interface e comportamento (Look and Feel) em qualquer sistema operacional. Swing e AWT Swing - Container Todo programa que usa Swing deve ter pelo menos um componente do tipo container. Descendentes da classe java.awt.Container; Componentes que podem conter outros componentes; Oferece suporte para desenho e tratamento de eventos. Containers “top level” Provê o suporte que os componentes swing necessitam para realizar o desenho da tela e o tratamento de eventos. JFrame: JDialog: Objeto que implementa janela principal; Objeto que implementa janela secundária; JApplet: Objeto que implementa uma área de visualização de applets em browsers. JFrame Um frame é uma janela, onde podemos definir: Um título; Botões de minimizar, maximizar ou fechar; Menus; Barras de rolagens. Entre outros. Aplicações com uma GUI usam, tipicamente, pelo menos um frame; É a base de tudo, ele armazena e exibe as coisas: Como se fosse uma moldura para fotos, você encaixa a foto (conteúdo) nele. Criando um projeto gráfico No netbeans, criar um projeto “Aplicação Java”; Adicionar ao projeto um “Form JFrame”. Praticando: Adicionem um “Form JFrame” com o nome de: Principal, dentro do pacote: ifrn.aula.poo.gui Executem o JFrame. Tela do Netbeans Acessando as Propriedades do JFrame Propriedades Importantes defaultCloseOperation title cursos maximumSize minimumSize name preferredSize resizable Visualizando o código do JFrame Inserindo conteúdo no JFrame O JFrame é apenas a moldula da janela, para inserir algum conteúdo é necessário outro compronente chamado JPanel. O JPanel é o “painel” que ficará na moldura, e fica responsável por receber os componentes que a tela terá (campos de textos, botões, imagens, entre outros). Os components em java são derivados da Classe JComponents. JPanel Observação: É possível colocar um JPanel em um JFrame, depois tirar e colocar outro no lugar dele; É possível pegar o mesmo JPanel e colocar em outro JFrame, e assim vai. Inserindo um JPanel Redimencionando o Jpanel para o tamanho do JFrame Visualizando Componentes Inserindo Componentes Os compnentes serão inseridos no JPanel; São derivados da Classe JComponents; Local no Netbeans: Exemplos de Componentes Componente Descrição JLabel Área em que podem ser exibidos texto não-editável ou ícones JTextField Área que se insere dados pelo teclado. Pode também exibir informações JButton Área que aciona um evento quando você clica JCheckBox Compontente GUI que tem dois estados: selecionado ou nãoselecionado JComboBox Lista de itens a partir do qual o usuário pode fazer uma seleção clicando em um item na lista ou digitando na caixa, se permitido JList Área em que uma lista de itens é exibida. O usuário pode fazer uma seleção clicando uma vez em qualquer elemento na lista. JPanel Container em que os componentes podem ser colocados JLabel Também conhecidos como rótulos; Fornecem instruções de texto ou informações em uma GUI; Classe JLabel: Subclasse de JComponent. Exibe: Uma única linha de texto somente de leitura; Uma Imagem; Ou texto e imagem. Inserindo um JLabel Propriedades text: Nome que será exibido na janela; Mudar para: “Nome:” Prática Insira outro Jlabel abaixo do já inserido, e mude o texto para: “Senha”. JTextField e JPasswordField São áreas de uma única linha em que o usuário insere texto pelo teclado, ou simplesmente serve para exibir texto; Entrada de dados. JPasswordField oculta os caracteres assumindo que eles representam uma senha. No Netbeans Inserir um campo de texto para o nome, e campo de senha para a senha. Propriedades text: Texto que será exibido dentro do campo de texto; Apagar o texto e deixar vazio. JButton Botão em que o usuário clica para disparar uma ação específica: Botões de comando; Caixas de marcação; Botões de alternância; Botões de opção. Inserindo um JButton Clicar e arrastar um Botão. Propriedades text: Texto que será exibido no botão; Mudar para: “Autenticar” Mudando o nome da variável que contém o objeto criado Selecione o campo de texto; Próximo à “Propriedades”, clique em “Código”; Depois mude a propriedade “Nome da Variável”. Mudando o nome da variável que contém o objeto criado Mudar o nome da variável dos campos: Campo do nome: “nome” Campo da senha: “senha” Adicionando ação ao botão Para que o Sistema reconheça uma ação ao clicar no botão, basta dar 2 cliques sobre o botão (no modo Projeto do netbeans). Um método de ação deste botão será criado automaticamente, e o código será exibido no local exato, para que possa implementar a ação desejada. Recuperando o texto dos campos Através do método getText(); No método que foi criado do botão, inserir o código: System.out.println(nome.getText()); System.out.println(senha.getText()); Executar o Sistema, digitar um nome e uma senha, e depois clicar no botão Autenticar. Observar o console do netbeans. Componente JOptionPane Caixas de dialogo usadas para informar algo, ou mesmo para entrada e saída de dados. Tipos: Método Descrição showConfirmDialog Pergunta uma confirmação, como sim/não/cancelar showInputDialog Solicita um valor de entrada showMessageDialog Informa ao usuário alguma coisa que aconteceu showConfirmDialog Importar javax.swing.JOptionPane JOptionPane.showConfirmDialog (null, "Mensagem que será exibida"); JOptionPane.showConfirmDialog(null, "Mensagem que será exibida", "Mensagem do Título", JOptionPane.YES_NO_CANCEL_OPTION ); JOptionPane.showConfirmDialog(null, "Mensagem que será exibida", "Título da Caixa de Dialogo", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE) ; showConfirmDialog Recuperando a opção escolhida: Retorna um inteiro: Sim – 0 Não – 1 Cancelar – 2 int opcao = JOptionPane.showConfirmDialog(null, "Mensagem que será exibida"); showInputDialog Importar javax.swing.JOptionPane JOptionPane.showInputDialog("Mensage m que será exibida"); JOptionPane.showInputDialog(null, "Mensagem que será exibida", "Mensagem do Título", JOptionPane.INFORMATION_MESSAGE); JOptionPane.showInputDialog(null, "Mensagem que será exibida", "Mensagem do Título", JOptionPane.ERROR_MESSAGE); showInputDialog Recuperando o que foi digitado: Retorna um String; String nome = JOptionPane.showInputDialog(null, "Mensagem que será exibida", "Mensagem do Título", JOptionPane.INFORMATION_MESSAGE); showMessageDialog Importar javax.swing.JOptionPane JOptionPane.showMessageDialog(null, "Mensagem que será exibida"); JOptionPane.showMessageDialog(null, " Mensagem que será exibida", “Mensagem do Título", JOptionPane.ERROR_MESSAGE); Dúvidas? Atividade Utilizando a interface de autenticação criada: Ao clicar no botão “Autenticar”, exibir uma caixa de confirmação, perguntando ao usuário se ele deseja continuar. Se clicar em “Sim”, verificar os dados: Usuário: aluno Senha: 12345 Se ele digitou o usuário e a senha correta, aparecer uma janela de mensagem informativa avisando que o usuário está autenticado; Se digitou errado, exibir uma caixa de mensagem de erro informando que o usuário não está autenticado, e que ele tente novamente.