View
4.108
Download
1
Category
Preview:
DESCRIPTION
Citation preview
Interface gráfica em JavaTécnicas de ProgramaçãoProf. Iális CavalcanteEngenharia da Computação2011.1
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.
Introdução
Componentes GUI em um browser:
Botão
Barra demenus
Menu
Campode texto
Barrade status
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
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
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
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);
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);
}
}
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);
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
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
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]);
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)
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);
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);
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);
JFrame no NetBeans
Novo -> JFramepublic Construtor() {
initComponents();}public void initComponents() { (...) }Área de Desenho e de Código.
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.
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.
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
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
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.
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.
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!
Recommended