interface grafica

24
Interface gráfica em Java Técnicas de Programação Prof. Iális Cavalcante Engenharia da Computação 2011.1

Upload: ialis-cavalcante

Post on 21-Dec-2014

4.108 views

Category:

Education


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Interface grafica

Interface gráfica em JavaTécnicas de ProgramaçãoProf. Iális CavalcanteEngenharia da Computação2011.1

Page 2: Interface grafica

Introdução

GUI – graphical user interface◦ Interface gráfica com o usuário

Fornece ao programa “aparência” e comportamentos “diferenciados”:◦ Nível básico de familiaridade com o

programa;◦ Reduz tempo de aprendizado;◦ Aumenta habilidade de uso produtivo do

programa.

Page 3: Interface grafica

Introdução

Componentes GUI em um browser:

Botão

Barra demenus

Menu

Campode texto

Barrade status

Page 4: Interface grafica

IntroduçãoComponentes GUI – interação através do mouse, teclado, etc.Exemplos:◦ JLabel – área exibível para textos não-editáveis ou ícones;

◦ JTextField – área para exibição e inserção de dados através do teclado;

◦ JButton – área que aciona um evento após clique do mouse;

JTextField

JLabel

JButton

Page 5: Interface grafica

IntroduçãoJCheckBox – componente com dois estados: selecionado ou não-selecionado;

JComboBox – lista de itens em que apenas um é selecionado, por mouse ou teclado;

JLista – lista de itens em que mais de um podem ser selecionados;

JPanel – contêiner em que os componentes podem ser colocados.

JCheckBoxJComboBox

JList JPanel

Page 6: Interface grafica

Visão geral do SwingPacote javax.swing◦ Escritos, manipulados e exibidos completamente em Java

(componentes Java puro);

Pacote java.awt◦ Estão diretamente associados à GUI da plataforma local;

◦ Exibidos de forma diferente, dependendo da plataforma;

java.lang.Object

java.awt.Component

java.awt.Container

javax.swing.JComponent

Page 7: Interface grafica

Caixas de DiálogoNo código AloMundo.java:

◦ JOptionPane.showMessageDialog( ... ) – return void◦ Parâmetros:

Component parentComponentObject messageString title (sobrecarga 1)int messageType (sobrecarga 1)Icon icon (sobrecarga 2)

◦ Exemplo:JOptionPane.showMessageDialog(null,"Alô, mundo!","Primeiro programa com interface gráfica",JOptionPane.DEFAULT_OPTION);

Page 8: Interface grafica

Caixas de Diálogopackage aula.igrafica;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

public class AloMundo extends JFrame {

public AloMundo(){JOptionPane.showMessageDialog(null,"Alô, mundo!","Primeiro

programa com interfacegráfica",JOptionPane.DEFAULT_OPTION);

}

public static void main(String args[]){AloMundo aplicacao = new AloMundo();aplicacao.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

Page 9: Interface grafica

Caixas de Diálogo◦ JOptionPane.showConfirmDialog( ... ) – return int◦ Parâmetros:

Component parentComponentObject messageString title (sobrecarga 1)int optionType (sobrecarga 1)int messageType (sobrecarga 2)Icon icon (sobrecarga 3)

◦ Exemplo:JOptionPane.showConfirmDialog(null, "Alô, mundo!", "Primeiro programa com interface gráfica", JOptionPane.CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);

Page 10: Interface grafica

Caixas de Diálogo

optionType◦ YES_NO_OPTION,

YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION

messageType◦ ERROR_MESSAGE,

INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, PLAIN_MESSAGE

Page 11: Interface grafica

Caixas de DiálogoNo código Calculadora.java:JOptionPane.showInputDialog( ... ) – return String◦ Parâmetros:

◦ Exemplo:JOptionPane.showInputDialog(null, "Qual o primeiro numero inteiro da operação?", "Tá indo bem!", JOptionPane.QUESTION_MESSAGE);

Inicial Sobrecarga 1 Sobrecarga 2

Component parentComponent Component parentComponent Component parentComponent

Object message Object message Object message

Object initialSelectedValue String title String title

int messageType int messageType

Icon icon

Object[] selectionValue

Object initialSelectedValue

Page 12: Interface grafica

Caixas de Diálogo◦ JOptionPane.showOptionDialog( ... ) – return int◦ Parâmetros:

Component parentComponentObject messageString titleint optionTypeint messageTypeIcon iconObject[] optionsObject initialValue

◦ Exemplo:String[] opcoes = {“Confirmar”, “Cancelar”, “Fechar”};JOptionPane.showOptionDialog(this, "mensagem", "titulo", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, icon, opcoes, opcoes[0]);

Page 13: Interface grafica

Layout do Componente

Aplicado em componentes containeresFlowLayout – objetos seguidos no containerBorderLayout – objetos dispostos nas bordas e centro do container◦ CENTER, NORTH, SOUTH, EAST, WEST

GridLayout – objetos dispostos como uma tabela (colunas e linhas)

Page 14: Interface grafica

Layout do ComponenteQual o resultado do código?

FlowLayout layout = new FlowLayout();Container container = getContentPane();container.setLayout( layout );container.add(leftButton);container.add(centerButton);container.add(leftButton);setSize(300,75);setVisible(true);

Page 15: Interface grafica

Layout do ComponenteQual o resultado do código?

BorderLayout layout = new BorderLayout();Container container = getContentPane();container.setLayout( layout );container.add(leftButton, BorderLayout.WEST);container.add(myList, BorderLayout.CENTER);container.add(otherButton, BorderLayout.SOUTH);setSize(300,75);setVisible(true);

Page 16: Interface grafica

Layout do ComponenteQual o resultado do código?

GridLayout layout = new GridLayout(2,2);Container container = getContentPane();container.setLayout( layout );container.add(leftButton);container.add(myButton);container.add(otherButton);setSize(300,150);setVisible(true);

Page 17: Interface grafica

JFrame no NetBeans

Novo -> JFramepublic Construtor() {

initComponents();}public void initComponents() { (...) }Área de Desenho e de Código.

Page 18: Interface grafica

Tratamento de EventosMecanismo:◦ Origem do evento◦ Objeto evento◦ “Ouvinte” (listener) do eventoOrigem: componente GUI que interage (botão)Objeto: encapsula as informações sobre o evento.Ouvinte: recebe as informações do evento e responde este mesmo evento.

Page 19: Interface grafica

Tratamento de Eventos

Tarefas do programador:◦ Registrar o ouvinte para o componente GUI;◦ Implementar o método de tratamento de

eventos.Pacotes:◦ java.awt.event◦ javax.swing.eventTeclar Enter irá chamar o método actionPerformed.

Page 20: Interface grafica

Tratamento de Eventos

TextFieldHandler handler = new TextFieldHandler;

textField1.addActionListener ( handler );

private class TextFieldHandler implements ActionListener {

// processa eventos

public void actionPerformed ( ActionEvent event ){

if (event.getSource() == textField1)

String saida = “TextField1 clicado!”;

}

}

origem objeto listener

objeto evento

Page 21: Interface grafica

Implementação 1Observe o uso das classes java.lang.Math e java.util.ArrayList

double res1 = Math.random();System.out.println("Valor 1: "+res1);double res2 = Math.random()*100;System.out.println("Valor 2: "+res2);int res3 = (int) Math.random()*100;System.out.println("Valor 3: "+res3);int res4 = (int) (Math.random()*100);System.out.println("Valor 4: "+res4);int[] res5 = new int[20];ArrayList array = new ArrayList();for(int j = 0; j < res5.length; j++){

res5[j] = (int) (Math.random()*100);array.add(res5[j]);

}System.out.println("Valor 5: "+res5);System.out.println("Valor 6: "+array);

Valor entre 0 e 1

Valor entre 0 e 100

Mau uso do cast

Uso correto do cast

Valor do endereço de memória

Valores de todos os elementos

Page 22: Interface grafica

Implementação 1Pesquise sobre o uso da classe Math e implemente um programa Java (com interface gráfica) que tenha a entrada de dois números inteiros, numA e numB, e escreva a saída em valor numérico real:◦ Método floor aplicado em numA/numB;◦ Método ceil aplicado em numB/numA;◦ Método pow aplicado a numAnumB e numBnumA;◦ Método tan aplicado a tangente de numA, numB,

numA/numB e numB/numA.

Page 23: Interface grafica

Implementação 2

Associe as classes Scanner e ArrayListpara a implementação do seguinte programa:◦ Leia um vetor de 10 (dez) valores inteiros

com a classe Scanner;◦ Multiplique cada valor lido a um número

aleatório que varie de 0 a 10000;◦ Insira os 4 (quatro) maiores valores do novo

vetor em um objeto da classe ArrayList;◦ Escreva na saída o valor deste novo objeto.

Page 24: Interface grafica

Implementação 3Jogo de azar: “Craps”◦ o jogador lança dois dados (cada um com seis faces,

com 1, 2, 3, 4, 5 e 6 pontos respectivamente);◦ calcula-se a soma das faces expostas:

se soma = 7 ou 11 -> jogador venceu;se soma = 2, 3 ou 12 -> jogador perdeu;senão, soma torna-se a “pontuação” do jogador.

◦ os dados são lançados novamente:soma = pontuação -> jogador venceu;soma = 7 -> jogador perdeu;senão, lança os dados novamente.

Projetar interface para este programa!