• Nenhum resultado encontrado

aula 14 - lablog

N/A
N/A
Protected

Academic year: 2021

Share "aula 14 - lablog"

Copied!
8
0
0

Texto

(1)

ROTEIRO PARA AULA DE LABORATÓRIO DE LÓGICA DE PROGRAMAÇÃO - OO

SEMANAS: 31/08/2015 a 04/09/2015 e 08/09/2015 a 14/09/2015

AULA 14 – Interface Gráfica para Usuário em Java

1. OBJETIVO(S)

- Aplicar o conceito de herança em programação orientada a objetos.

- Desenvolver interfaces gráficas para usuário com Java.

2. MATERIAL UTILIZADO

Alunos: Lápis ou caneta, borracha, papel ou microcomputador, com o IDE jGRASP.

Professor: Lousa Branca e canetas para quadro branco e / ou microcomputador, com o

IDE jGRASP.

3. INTRODUÇÃO e PROCEDIMENTO

Os alunos devem abrir o JGRASP e seguir o roteiro abaixo passo a passo, item a item.

Quando necessário, o professor deve esclarecer dúvidas e dar as orientações para a

execução da tarefa e entendimento da matéria envolvida. Em seguida, os alunos

devem resolver os exercícios propostos no item 4.

****** Abaixo está descrita, uma maneira de criar interfaces gráficas para

usuário, com linguagem JAVA:

3.1 Criar uma classe que seja extensão da classe JFrame (javax.swing).

public class Login extends JFrame

{ }

3.2 “Importar” os pacotes necessaries.

import javax.swing.*;

import java.awt.*; import java.awt.event.*;

public class Login extends JFrame {

} // fim da classe Login

3.3 Declarar, como atributos, os objetos que devem aparecer dentro da

interface gráfica.

import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class Login extends JFrame {

private JButton bLogin; // botão

private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto } // fim da classe Login

(2)

Ano: 2015

3.4 Escrever o construtor; na primeira linha do constructor, fazer a

chamada “super”.

import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class Login extends JFrame {

private JButton bLogin; // botão private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto public Login( )

{

// chama o construtor da superclasse super(“Digitar Login e Senha”); } // fim do construtor

} // fim da classe Login

3.5 Criar um objeto “Container”, que receberá os objetos que aparecerão

na interface gráfica.

import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class Login extends JFrame {

private JButton bLogin; // botão private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto public Login( )

{

// chama o construtor da superclasse super(“Digitar Login e Senha”); // prepara o Container

Container jaca = getContentPane( ); } // fim do construtor

} // fim da classe Login

3.6 Selecionar um “Layout” e atribuí-lo ao “Container”.

import javax.swing.*;

import java.awt.*; import java.awt.event.*;

public class Login extends JFrame {

private JButton bLogin; // botão private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto public Login( )

{

// chama o construtor da superclasse super(“Digitar Login e Senha”); // prepara o Container

Container jaca = getContentPane( );

// ajusta um FlowLayout para o Container jaca.setLayout( new FlowLayout( ) ); } // fim do construtor

(3)

3.7 Instanciar os objetos que vão compor a interface gráfica.

import javax.swing.*;

import java.awt.*; import java.awt.event.*;

public class Login extends JFrame {

private JButton bLogin; // botão private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto public Login( )

{

// chama o construtor da superclasse super(“Digitar Login e Senha”); // prepara o Container

Container jaca = getContentPane( ); // ajusta um FlowLayout para o Container jaca.setLayout( new FlowLayout( ) );

// instanciando os objetos da interface lLogin = new JLabel( “Login” ); lSenha = new JLabel( “Senha” ); tLogin = new JTextField( 10 ); tSenha = new JTextField( 10 ); bLogin = new JButton( “Enviar” ); } // fim do construtor

} // fim da classe Login

3.8 Adicionar os objetos no “Container”.

import javax.swing.*;

import java.awt.*; import java.awt.event.*;

public class Login extends JFrame {

private JButton bLogin; // botão private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto public Login( )

{

// chama o construtor da superclasse super(“Digitar Login e Senha”); // prepara o Container

Container jaca = getContentPane( ); // ajusta um FlowLayout para o Container jaca.setLayout( new FlowLayout( ) );

// instanciando os objetos da interface lLogin = new JLabel( “Login” ); lSenha = new JLabel( “Senha” ); tLogin = new JTextField( 10 ); tSenha = new JTextField( 10 ); bLogin = new JButton( “Enviar” );

// Adiciona os objetos instanciados no Container jaca.add( lLogin ); jaca.add( tLogin ); jaca.add( lSenha ); jaca.add( tSenha ); jaca.add( bLogin ); } // fim do construtor } // fim da classe Login

(4)

Ano: 2015

3.9 Ajustar tamanho e localização; tornar o JFrame visível.

import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class Login extends JFrame {

private JButton bLogin; // botão private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto public Login( )

{

// chama o construtor da superclasse super(“Digitar Login e Senha”); // prepara o Container

Container jaca = getContentPane( ); // ajusta um FlowLayout para o Container jaca.setLayout( new FlowLayout( ) );

// instanciando os objetos da interface lLogin = new JLabel( “Login” ); lSenha = new JLabel( “Senha” ); tLogin = new JTextField( 10 ); tSenha = new JTextField( 10 ); bLogin = new JButton( “Enviar” );

// Adiciona os objetos instanciados no Container jaca.add( lLogin );

jaca.add( tLogin ); jaca.add( lSenha ); jaca.add( tSenha ); jaca.add( bLogin );

// Ajusta tamanho e localização setSize( 200, 200 );

setLocation( 300, 300 ); // Torna a JFrame visível setVisible( true ); } // fim do construtor } // fim da classe Login

3.10 Dar funcionalidade ao botão.

import javax.swing.*;

import java.awt.*; import java.awt.event.*;

public class Login extends JFrame

implements ActionListener

{

private JButton bLogin; // botão private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto public Login( )

{

// chama o construtor da superclasse super(“Digitar Login e Senha”); // prepara o Container

Container jaca = getContentPane( ); // ajusta um FlowLayout para o Container jaca.setLayout( new FlowLayout( ) );

// instanciando os objetos da interface lLogin = new JLabel( “Login” ); lSenha = new JLabel( “Senha” );

(5)

tLogin = new JTextField( 10 ); tSenha = new JTextField( 10 ); bLogin = new JButton( “Enviar” ); // torna o botão “sensível” a evento bLogin.addActionListener( this );

// Adiciona os objetos instanciados no Container jaca.add( lLogin );

jaca.add( tLogin ); jaca.add( lSenha ); jaca.add( tSenha ); jaca.add( bLogin );

// Ajusta tamanho e localização setSize( 200, 200 );

setLocation( 300, 300 ); // Torna a JFrame visível setVisible( true ); } // fim do construtor } // fim da classe Login

3.11 Escrever, na classe, o método actionPerformed( ), que será

responsável pelas ações que o programa executará, quando o usuário

clicar o botão.

import javax.swing.*; import java.awt.*; import java.awt.event.*;

public class Login extends JFrame implements ActionListener {

private JButton bLogin; // botão private JLabel lLogin, lSenha; // rótulos

private JTextField tLogin, tSenha; // campos de texto public Login( )

{

// chama o construtor da superclasse super(“Digitar Login e Senha”); // prepara o Container

Container jaca = getContentPane( ); // ajusta um FlowLayout para o Container jaca.setLayout( new FlowLayout( ) );

// instanciando os objetos da interface lLogin = new JLabel( “Login” ); lSenha = new JLabel( “Senha” ); tLogin = new JTextField( 10 ); tSenha = new JTextField( 10 ); bLogin = new JButton( “Enviar” ); // torna o botão “sensível” a evento bLogin.addActionListener( this );

// Adiciona os objetos instanciados no Container jaca.add( lLogin );

jaca.add( tLogin ); jaca.add( lSenha ); jaca.add( tSenha ); jaca.add( bLogin );

// Ajusta tamanho e localização setSize( 200, 200 );

setLocation( 300, 300 ); // Torna a JFrame visível setVisible( true ); } // fim do construtor

(6)

Ano: 2015

public void actionPerformed( ActionEvent evento )

{

// quando o botão bLogin for clicado, as ações a seguir serão // executadas

if( evento.getSource( ) == bLogin ) {

// captura o texto digitado pelo usuário no campo tLogin // armazenando-o na variável local login

String login = tLogin.getText( );

// captura o texto digitado pelo usuário no campo tSenha // armazenando-o na variável local senha

String senha = tSenha.getText( );

if( login.equals( “usuario” ) && senha.equals( “1234” ) ) {

JOptionPane.showMessageDialog( null, “Bem-vindo”, “Acesso Permitido”, 1 );

} else {

JOptionPane.showMessageDialog( null, “Login ou senha não são válidos”, “Acesso Negado”, 1 );

}

// limpa os campos de texto tLogin.setText( “” );

tSenha.setText( “” ); }

} // fim do método actionPerformed } // fim da classe Login

3.11 Criar, em outra classe, o método main( ), que irá instanciar a interface

gráfica programada na classe Login.

import javax.swing.*; public class TesteLogin {

public static void main( String args[ ] ) {

// instancia objeto da classe Login Login goiaba = new Login( );

// ajusta o botão “fechar” para encerrar a execução do programa goiaba.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); }

} // fim da classe TestaLogin

Compilar as classes criadas e testar o funcionamento do aplicativo criado.

Resolver eventuais dúvidas com o professor e fazer os exercícios a seguir.

4. EXERCÍCIOS

4.1 Implementar a interface a seguir e dar funcionalidade. Seu funcionamento é

simples: o usuário digita valores nos dois primeiros campos de texto, clica no

botão da operação desejada. O aplicativo calcula e escreve o resultado no 3.o

campo de texto. Usar o bloco try...catch() onde e quando for necessário.

(7)

4.2 Escrever uma classe com o método main(), com a finalidade de testar os

métodos da hierarquia de classes criada no exercício 5.1 da aula 13 (Ponto,

Circulo e Cilindro), usando uma classes extendidas da classe JFrame, com

objetos das classes JButton, JLabel e JTextField (faça uma interface gráfica para

testar Ponto, uma para Circulo e uma para Cilindro). Usar o bloco try...catch()

onde e quando for necessário.

4.3 Escrever uma classe com o método main(), com a finalidade de testar os

métodos da hierarquia de classes criada nos exercícios 5.2 e 5.3 da aula 13

(PessoaFisica, Empregado, Desempregado, Mensalista, Horista, Tarefeiro e

Vendedor), usando uma classes extendidas da classe JFrame, com objetos das

classes JButton, JLabel e JTextField (faça uma interface gráfica diferente para

testar cada classe dessa hierarquia). Usar o bloco try...catch() onde e quando

for necessário.

4.4 Escrever uma classe com o método main(), com a finalidade de testar os

métodos da hierarquia de classes criada no exercício 5.4 da aula 13

(Pagamento, CartaoDeCredito, Cheque e Boleto), usando uma classes

extendidas da classe JFrame, com objetos das classes JButton, JLabel e

JTextField. Faça com que o aplicativo mostre um InputDialog, no qual o usuário

escolhe a forma de pagamento. Depois que o usuário seleciona a forma de

pagamento, o aplicativo mostra a interface gráfica (JFrame) adequada e

adaptada à selação do usuário. Usar o bloco try...catch() onde e quando for

necessário.

4.5 Nos exercícios anteriores, modifique as interfaces gráficas. Procure usar outros

gerenciadores de Layout (BorderLayout, GridLayout) e tente agrupar objetos

JLabel, JButton e JTextField, usando JPanel.

4.6 Uma Universidade deseja realizar um levantamento estatístico sobre seu

vestibular. Para isso, desenvolva um aplicativo em linguagem Java, com o que

se pede a seguir.

Escrever a classe Candidato, que tem como atributos únicos nome (String), cpf

(String), sexo (String) e codigoDoCurso (int) desejado pelo candidato. Escrever

também construtores, métodos de acesso, métodos modificadores e outros

métodos que você julgar necessários.

(8)

Ano: 2015

Escrever a classe Curso, que tem como atributos únicos nomeDoCurso (String),

codigoDoCurso (int) e numeroDeVagas (int). Escrever também construtores,

métodos de acesso, métodos modificadores e outros métodos que você julgar

necessários.

Escrever a classe Vestibular, cujos atributos únicos são:

- cursos, que é um ArrayList para armazenar objetos da classe Curso;

- candidatos, que é um ArrayList para armazenar objetos da classe Candidato.

Escrever também, na classe Vestibular:

a) um construtor sem parâmetros que inicie os atributos;

b) um método que calcule e retorne o número de candidatos inscritos por curso;

c) um método que calcule e retorne a percentagem de candidatos do sexo

feminino para cada curso;

d) um método que calcule e retorne o número total de inscritos no vestibular;

e) um método que calcule e retorne a relação candidato / vaga para cada curso.

Finalmente, escrever uma classe, com o método main( ), para executar a aplicação.

O aplicativo desenvolvido deve mostrar, no final, o resultado dos métodos dos itens de

a) até e) da classe Vestibular.

Faça o possível para desenvolver classes e métodos coesos e reduzir a quantidade de

acoplamentos entre classes. Para entrada e saída de dados, você pode desenvolver

interface gráfica de usuário com base na classe JFrame, ou também usar os métodos

showInputDialog() e showMessageDialog() em uso combinado com a interface gráfica

(JFrame) . Use o bloco try-catch, onde ele for necessário.

5. REFERÊNCIAS

BARNES, D. J. KOLLING, M. Programação Orientada a Objetos com Java. 4 Ed. São Paulo: Pearson Prentice-Hall, 2009.

GOLDMAN, A. KON, F. SILVA, P. J. S. Introdução à Ciência da Computação com Java e Orientação a Objetos. Disponível em http://ccsl.ime.usp.br/files/books/intro-java-cc.pdf.

DEITEL, P. DEITEL, H. Java: como programar. 8 Ed. São Paulo: Prentice – Hall (Pearson), 2010. • http://programacaousjt.blogspot.com

Referências

Documentos relacionados

Exposição de longa duração Efeitos potenciais imediatos Efeitos potenciais retardados : : Efeitos potenciais imediatos Efeitos potenciais retardados : : Outras informações :

FIGURA 1: Valores médios da porcentagem de germinação de sementes de Hymenaea stigonocarpa submetidas a diferentes tratamentos pré-germinativos.. contrapartida, Souza et

A decisão da associação vem baseada em estudos científicos realizados ao longo dos anos por cientistas renomados e capacita- dos, que demonstraram a eficá- cia da low

A queda na eclodibilidade de pintos de corte, de ambas as linhagens, foram influenciadas pelas condições ambientais (baixa velocidade do ar, alta umidade relativa,

13) Para tal fim cada Parte deverá comunicar a outra por escrito da existência e o objeto da controvérsia, para a resolução da mesma. 14) Caso isto não aconteça em até 60

Q Se não houver espaço suficiente na memória interna do visualizador de imagem para todas as suas fotos favoritas, as Favoritas mais recentes serão transferidas do computador para

Nesse contexto, o presente estudo foi realizado com o intuito de avaliar o crescimento e o desempenho econômico de plantios de Eucalyptus dunnii em diferentes sítios no

Não apenas o teor de fibras é importante no controle da fissuração, ou na distribuição das fissuras, mas também outras variáveis devem ser consideradas, tais como