Buscar

Aulas 3 e 4 - POO

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Programação Orientada a Objetos
Professora : Jane
*
Interface Gráfica com Swing
Aulas 3 e 4
Professora: Jane
Programação Orientada a Objetos
Professora : Jane
*
Hierarquia de classes 
java.lang.Object
 +--java.awt.Component
 +--java.awt.Container
 +--javax.swing.JComponent
 | +--javax.swing.JButton
 | +--javax.swing.JLabel
 | +--javax.swing.JMenuBar
 | +--javax.swing.JOptionPane
 | +--javax.swing.JPanel
 | +--javax.swing.JTextField
 |
 +--java.awt.Window
 +--java.awt.Frame
 +--javax.swing.JFrame
 
Programação Orientada a Objetos
Professora : Jane
*
BorderLayout
Default do frame  BorderLayout 
EAST
WEST
SOUTH
NORTH
Programação Orientada a Objetos
Professora : Jane
*
Código usando BorderLayout
import javax.swing.*;
import java.awt.*;
public class Main {
 public static void main(String args[]) {
 JFrame f = new JFrame();
 Container c = f.getContentPane();
 c.setLayout(new BorderLayout());
 c.add(new JButton ("Botão 1 "), BorderLayout.NORTH);
 c.add( new JTextField ("TEXTO 2" ) , BorderLayout.EAST);
 c.add( new JTextField ("TEXTO 1" ) , BorderLayout.WEST);
 c.add(new JButton("Botão 2") , BorderLayout.CENTER);
 c.add( new JButton ("Botão 3"), BorderLayout.SOUTH);
 f.setSize(300,400);
 f.setVisible(true);
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 } }
Programação Orientada a Objetos
Professora : Jane
*
Observação :
Note que add foi usado com dois argumentos. Revendo trecho do exemplo anterior :
 c.add(new JButton ("Botão 1 "), BorderLayout.NORTH);
Componente a ser adicionado, que no caso é um botão
Posição de inserção
Programação Orientada a Objetos
Professora : Jane
*
Exercício:
Faça uma aplicação em Java para construir a interface abaixo com o layout de borda
Programação Orientada a Objetos
Professora : Jane
*
Layouts compostos
Para trabalhar com mais de um layout, dividimos a interface em partes e aplicamos a cada uma delas um container com um layout
 manager. Assim, cada container abrigará os componentes conforme o desejado.
Recordando .... 
para colocar mais de um componente em fluxo dentro de uma área de um container, devemos usar o gerenciador de layout FlowLayout,
se quisermos dividir uma área em células, usaremos o GridLayout,
e para dividir um container em Norte, Sul, Leste, Oeste e Centro, usaremos o BorderLayout.
Programação Orientada a Objetos
Professora : Jane
*
Exemplo de layout composto
Os layouts aqui usados são :
FlowLayout
BorderLayout
Programação Orientada a Objetos
Professora : Jane
*
Código 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main {
 public static void main(String[] args) {
 
 JFrame j = new JFrame("Teste");
 JPanel p1 = new JPanel(new FlowLayout());
 JPanel p2 = new JPanel(new BorderLayout());
 
 
Programação Orientada a Objetos
Professora : Jane
*
 p1.add(new JButton("B1 - painel 1"));
 p1.add(new JButton("B2 - painel 1"));
 p1.setBackground(Color.BLUE); //define cor de fundo
 
 p2.add(new JButton("B1 - painel 2"), BorderLayout.WEST);
 p2.add(new JButton("B2 - painel 2"), BorderLayout.EAST);
 p2.setBackground(Color.YELLOW); //define cor de fundo
 j.add(p1, BorderLayout.NORTH);
 j.getContentPane().add(new JButton("Botão central"),
 BorderLayout.CENTER);
 j.add(p2,BorderLayout.SOUTH);
 j.setVisible(true);
 j.setSize(300,300);
 j.setLocation(200,200); // continua .... } }
Programação Orientada a Objetos
Professora : Jane
*
Exercício com layout composto
Escreva uma aplicação em Java com botões e campo de texto para construir uma calculadora semelhante à dada abaixo. Use, obrigatoriamente, os layout(s) visto(s). Veja a sugestão abaixo.
Painel com FlowLayout
Painel com GridLayout
Painel com GridLayout
Programação Orientada a Objetos
Professora : Jane
*
Exercício com layout composto
Crie uma aplicação em Java para criar a interface dada abaixo. Note que há um objeto novo, um objeto da classe JTextArea. Vamos discutir o layout e no final, saber mais sobre a classe JTextArea e a classe Date.
Área de texto
BRST : Brasilia Summer Time
Programação Orientada a Objetos
Professora : Jane
*
Use na janela o BorderLayout
Painel 
botoes
(usa FlowLayout)
Painel 
barraStatus
(usa FlowLayout)
 Painel botoes está ao norte e o painel barraStatus está ao sul.
 Como o painel botoes ficará ao norte da janela, a área de texto ao centro da janela e a barraStatus ao sul, trabalharemos com o BorderLayout para dispor os 3 painéis sobre o frame. 
 
Programação Orientada a Objetos
Professora : Jane
*
O que há de novo neste exercício ?
Classe JTextArea (pertence ao pacote javax.swing)
Exemplo que cria objeto :
 JTextArea areaTexto = new JTextArea("Digite seu texto aqui: ", 20, 50);
Note : Este construtor recebe o texto que aparece na área, o número de linhas e
 o número de colunas. Em outra aula, estudaremos mais a classe JTextArea.
Trecho que define a cor de fundo da área de texto (text area) :
 areaTexto.setBackground(Color.yellow);
Programação Orientada a Objetos
Professora : Jane
*
Classe Date (importar pacote java.util)
 //Teste e veja que fornece dia, mês, ano, hora, minuto, segundo e ...
Exemplo :
 Date agora = new Date(); 
 JLabel relogio = new JLabel("Data/Hora: " + agora);
Exemplo : De outro jeito
 JLabel relogio = new JLabel("Data/Hora: " + new Date() );
Exemplo : Ou ainda ... Veja o toString !
 JLabel relogio = new JLabel(new Date().toString());
Programação Orientada a Objetos
Professora : Jane
*
Exercício : 
Treinando painéis compostos
Monte o layout abaixo, depois de acompanhar as orientações que aparecem nos próximos slides. Escolha uma cor de fundo para cada área.
Programação Orientada a Objetos
Professora : Jane
*
Novamente, para montar um layout mais complexo, podemos dividir em dois passos:
Combinar vários painéis usando o BorderLayout ;
Acrescentar os componentes aos painéis.
Programação Orientada a Objetos
Professora : Jane
*
Temos que criar alguns painéis estruturantes (P2, P23) e, dentro desses, os painéis de conteúdo (em azul).
Os painéis estruturantes, nesse exemplo, usam BorderLayout.
Lembre-se de que, no BorderLayout, a área é dividida em 5 regiões e só podemos colocar um elemento em cada região.
Programação Orientada a Objetos
Professora : Jane
*
Observe 
P1:norte
P2: centro
P21: norte
P22: oeste
P23: centro
P231: norte
P232: centro
P3: sul
Programação Orientada a Objetos
Professora : Jane
*
Após compor o layout ...
Pede-se :
Em P1 : formulário para nome e sobrenome, em textfields diferentes. 
Em P21 : formulário para telefone e email.
Em P22 : um ou mais labels com mensagens a sua escolha
Em P231 : Data/hora : seguido da data e hora correntes.
Em P232 : Uma área de texto com 3 linhas e 30 colunas.
Em P3 : três botões, por exemplo : Inserir Remover Sair
Veja a tela a seguir ....
Programação Orientada a Objetos
Professora : Jane
*
Programação Orientada a Objetos
Professora : Jane
*
Cor de fundo, cor de frente e fontes(estilo, tamanho e cor)
package ex1fonte;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main {
 public static void main(String[] args) {
 //Declarando e instanciando objetos
 JFrame janela = new JFrame("Trabalhando com fontes");
Programação Orientada a Objetos
Professora : Jane
*
//continuação ... declarando e instanciando
 JPanel
p = new JPanel();
 JButton b1 = new JButton("Botao 1");
 JButton b2 = new JButton("Botao 2");
 JButton b3 = new JButton("Botao 3");
 //Adicionando objetos
 janela.getContentPane().add(p);
 p.add(b1);
 p.add(b2);
 p.add(b3);
 
Programação Orientada a Objetos
Professora : Jane
*
 //Definindo cor de fundo do painel p
 p.setBackground(Color.YELLOW);
 //Definindo cor de fundo do botão b1
 b1.setBackground(Color.BLUE);
 
 //Definindo fonte
 Font f = new Font("Arial",Font.BOLD + Font.ITALIC,18);
 b1.setFont(f); //define a fonte f do botão b1
 b1.setForeground(Color.RED); //define a cor de frente da fonte do botão b1
 
 Font f1 = new Font("Times New Roman",Font.PLAIN,20);
 b2.setFont(f1);
 b2.setForeground(Color.MAGENTA);
 b3.setFont(f);
Tarefa : Use Font e setForeground em um dos botões da aplicação anterior.
Programação Orientada a Objetos
Professora : Jane
*
//Finalizações
 janela.setVisible(true);
 janela.setBounds(50,50,500,500);
 janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 } //fim do método main
} //fim da classe Main
Tarefa : O método setBounds recebe as coordenadas x e y do objeto janela, além da largura e altura.
Outro exemplo ... Seja o trecho :
 JButton ok = new JButton(“OK”);
 painel.add(ok);
 ok.setBounds(10,10,30,15); 
Regra :
objeto.setBounds(x,y,largura,altura);
Programação Orientada a Objetos
Professora : Jane
*
Classe Font
Hierarquia
java.lang.Object
 java.awt.Font
Construtor:
Font(String nome, int estilo, int tamanho)
Programação Orientada a Objetos
Professora : Jane
*
Constantes estáticas que dão o estilo da fonte : 
BOLD
ITALIC
PLAIN
Obs.: Para compor mais de um estilo use +
Exemplo :
Font f = new Font("Arial", Font.BOLD + Font.ITALIC, 18); 
Programação Orientada a Objetos
Professora : Jane
*
Bordas
Acrescente o trecho abaixo à aplicação anterior e teste. Tem que adaptar.
 Border bordaPainel = new LineBorder(Color.RED,2);
 p.setBorder(bordaPainel);
 Border bordaBotao2 = new LineBorder(Color.GREEN,6);
 b2.setBorder(bordaBotao2);
Classe LineBorder – Interface Border – pacote javax.swing.border
Construtores :
1) LineBorder(Color cor) : cria um line border com a cor e a espessura igual a 1
 2) LineBorder(Color cor, int thickness) : cria uma line border com a cor e a espessura  (thickness) especificadas.           
Programação Orientada a Objetos
Professora : Jane
*
Cursor
Hierarquia
 java.lang.Object
 
 java.awt.Cursor
Construtor
 Cursor(int type) : cria um objeto da classe Cursor com o tipo especificado.    
Programação Orientada a Objetos
Professora : Jane
*
Tipos de cursor
Cursor.HAND_CURSOR
Cursor.TEXT_CURSOR
Cursor.CROSSHAIR_CURSOR
Para associar o objeto da classe Cursor a um outro objeto, use o método setCursor.
 public void setCursor(java.awt.Cursor cursor) - permite trocar o cursor quando o componente estiver em foco.
Programação Orientada a Objetos
Professora : Jane
*
Exemplos : Adicione este trecho, adaptando, ao programa que mexe com fonte e borda e então, teste-o.
 Cursor mao = new Cursor(Cursor.HAND_CURSOR);
 b1.setCursor(mao);
 Cursor texto = new Cursor(Cursor.TEXT_CURSOR);
 b2.setCursor(texto);
 Cursor cruz = new Cursor(Cursor.CROSSHAIR_CURSOR);
 b3.setCursor(cruz);
Programação Orientada a Objetos
Professora : Jane
*
Testando e aprendendo...
Teste as constantes
Cursor.WAIT_CURSOR
Cursor.MOVE_CURSOR
Cursor.DEFAULT_CURSOR
na aplicação anterior.
Programação Orientada a Objetos
Professora : Jane
*
Manipulando aspectos visuais Como visto ... 
 Todos os componentes do SWING que são originados da superclasse
 javax.swing.JComponent, possuem um conjunto de métodos que possibilitam controlar
 aspectos visuais como fonte, cursor, borda, cor de fonte e cor de fundo. São eles :
public void setCursor(java.awt.Cursor cursor) - permite trocar o cursor quando este componente estiver em foco.
public void setBackground(java.awt.Color color) - permite trocar a cor de fundo do componente.
public void setForeground(java.awt.Color color) - permite trocar a cor de frente do componente.
public void setEnabled(boolean enabled) - permite habilitar ou desabilitar este componente.
Programação Orientada a Objetos
Professora : Jane
*
public void setFont(java.awt.Font font) - permite escolher uma fonte para este componente.
public void setBorder(javax.swing.border.Border border) - permite definir uma borda para este componente.
public void setToolTipText(String text) – permite colocar um texto de dica para o componente.
Programação Orientada a Objetos
Professora : Jane
*
Exercícios
Use o método setToolTipText para pôr uma dica em algum componente da última aplicação vista.
Use a aplicação que lida com JTextArea e trabalhe com um cursor diferente, escolhendo um dos apresentados. 
Desabilite a área de texto (objeto de JTextArea) e teste. Para isso, use o método setEnabled .

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando