Baixe o app para aproveitar ainda mais
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 .
Compartilhar