Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Programação Orientada a Objetos - III Material III-Bimestre Estudo da linguagem Java em ambiente gráfico pacote(awt,swing) Manipulação de Banco de Dados Site : http://www1.univap.br/~wagner Prof. Responsável Wagner Santos C. de Jesus O que vem a ser o pacote (awt) Para trabalharmos na linguagem Java com ferramentas para criação e Lay-out de Formulários uma das ferramentas que podemos usar é um pacote gráfico denominado (awt) cujo significado é (Abstract Window ToolKit - Kit de abstração para o trabalho com Janelas). Com essa ferramenta é possível nos trabalharmos com componentes gráficos com botões, caixa de texto etc. Usando o pacote (awt - Abstract Window Toolkit). Para usar o componentes desse pacote é necessário importa-lo para seu programa isso é feito usando o comando (import). Funcionamento (awt) Usando comando import. Importando o pacote (awt). Exemplo : import java.awt.*; Frame : Criando um formulário para uma aplicação. Para se criar um formulário em Java usamos uma classe chamda Frame(). Obs : Um Frame pode ser instanciado como qualquer outro objeto mais para criarmos uma estrutura onde todos os objetos serão criados a partir de um Frame usamos o comando extends. extends - Estendendo uma Classe extends : Cria uma super classe para o objeto permitindo que todos os outros estejam contidos nessa mesma classe. Estrutura Básica. public class teste extends Frame{ : : Criação dos Componentes gráficos : } Exemplo Estrutura Completa : public class teste extends Frame{ public teste() { : Criação dos Componentes gráficos : } public eventos() { : : Criação da Lógica ..... } public static void main(..........) { : <Instancia da classe> } } Criando os componentes gráficos Panel() : Para se adicionar um objeto em qualquer parte da aplicação é necessário a criação de um painel para esse objeto. Sintaxe : Panel <Nome-Objeto>; Exemplo : Panel p1; : p1 = new Panel(); Label() : Para se criar um rótulo escrito na tela é necessário usar a classe Label(). Sinatxe : Label <Nome-Objeto>; Exemplo : Label L1; : L1 = new Label("Mensagem Enviada .... "); Button() : Para se cria um objeto botão é necessário usar a classe button. Sintaxe : Button <Objeto>; Exemplo : Button Botao1; : Botao1 = new Button("Ok"); TextField() : Classe que permite a criação de uma caixa de texto. Sintaxe : TextField <Objeto>; Exemplo : : TextField text1; text1 = new TextField("Mensagem",10); Obs : A string mensagem irá aparecer na caixa de texto e o valor 10 é o tamanho da caixa de texto. Métodos setLayout() : Para se criar um formulário é necessário dizer que tipo de formulário estamos usando, para isso usamos o método setLayout(). Sintaxe : setLayout(<tipo-do-formulário>); Obs : Os tipos de formulários são Fluxo, Borda, Grade. Sendo que iremos tratar apenas com o estilo de Bordas. Exemplo setLayout() Exemplo : setLayout( new BorderLayout()); O layout de borda é representado pelos pontos cardeais da seguinte maneira. Criando as coordenadas para o Formulário. add() : Associa um objeto a um outro no caso um Painel. Sinatxe : add(<coord>,<Objeto>); ou <objeto>.add(<Objeto>); Criando os Objetos em um formulário (Instanciando os Componentes) Exemplo Prático da utilização de um objeto. Label() Panel p1; Label rotulo1; : : p1 = new Panel(); add("North",p1); rotulo1 = new Label("Olá Mundo "); p1.add(rotulo1); : : Exemplo Prático da utilização de um objeto. Button() Panel p1; Button btn1; : : p1 = new Panel(); add(”South",p1); btn1 = new Button(" Ok "); p1.add(btn1); : : Exemplo Prático da utilização de um objeto. TextField() Panel p1; TextField caixa1; : : p1 = new Panel(); add(”North",p1); caixa1 = new TextField(10); p1.add(caixa1); : : Criando botões agrupado (botões de radio). Classe CheckboxGroup(). Irá criar um agrupamento para os objetos que serão associados a CheckboxGroup(). Sintaxe : CheckboxGroup <objeto>; Exemplo : CheckboxGroup grupo; grupo = new CheckboxGroup(); Checkbox() : Cria objetos botões de radio para escolha do usuário. Sintaxe : Checkbox <Objeto>; <objeto> = new Checkbox(<String>,[<grupo>],<boolean>); Onde : <String> - vem a ser a string que vai aparece escrita no formulário. <grupo> - variável instanciada pela classe CheckBoxGroup. <boolean> - operador booleano true/false onde deverá que apareça a bolinha de indicação de escolha. Exemplo : Botões de Rádio Exemplo : : : grupo = new CheckboxGroup(); c1 = new Checkbox("Masculino",grupo,false); c2 = new Checkbox("Feminino",grupo,true); tela3 = new Panel(); add("North",tela3); tela3.add(c1); tela3.add(c2); Para cria caixa de verificação basta tirar o objeto da classe CheckboxGroup() Exemplo : c1 = new Checkbox("Pokemons",false); c2 = new Checkbox("Poderosas",false); tela3 = new Panel(); add("North",tela3); tela3.add(c1); tela3.add(c2); Capturando dados de um CheckboxGroup(). (Botão de Rádio) Usamos os métodos : getCurrent() - Retorna o objeto que foi selecionado. getLabel() - Retorna com o rótulo da opção selecionada no Checkbox. Sintaxe : <VarString> = <grupo>.getCurrent().getLabel(); Exemplo : String opcao = grupo.getCurrent().getLabel(); Capturando dados de um Checkbox(). (Caixa de Verificação) Usamos o método : getState() - Retona um booleando true/false, true se tiver selecionado e falso caso não esteja. Sintaxe : <boolean> = <objeto>.getState(); Exemplo : boolaen teste = c1.getState(); Choice() - Classe Choice cria uma caixa de combinação(Combobox). Sintaxe : Choice <Objeto>; : : <Objeto> new Choice(); : : addItem() - Adiciona itens em uma caixa de combinação ou Lista. Sintaxe : <Objeto>.addItem(<String>); Exemplo : Criação de uma caixa de combinação contendo itens. Choice combo1; : : combo1 = new Choice(); combo1.addItem("Jose"); combo1.addItem("Paula"); combo1.addItem("Fernanda"); tela3 = new Panel(); add("North",tela3); tela3.add(combo1); : : List() - A classe List cria um objeto de caixa de lista. Sintaxe : : : List <Objeto>; : <Objeto> = new List(<ExpN>,<Boolean>); : : Onde : <ExpN> - Número inteiro que representa quantas linhas serão mostradas pela caixa de lista. <Boolean> - true/false que indique se a caixa de lista poderá ou não selecionar mais de um item. Exemplo : List() Exemplo : : : lista1 = new List(3,false); lista1.addItem("Jose"); lista1.addItem("Paula"); lista1.addItem("Fernanda"); lista1.addItem("Marta"); lista1.addItem("Solange"); tela3 = new Panel(); add("North",tela3); tela3.add(lista1); : Capturando dados de uma caixa de lista ou combinação. (getSelectedItem()) Sintaxe : <VarString> = <Objeto>.getSelectedItem(); Exemplo : String opcao = lista1.getSelectedItem(); Obs : Retorna para a variável opção com o item selecionado na caixa de lista. select(<indice>) : Seleciona automaticamente um elemento da lista. Sintaxe : caixadelista.select(<Num>); Exemplo : lista1.select(0); getSelectedIndex() : Retorna com o numero do índice selecionado na lista. Obs : Caso nenhum item seja selecionado por um usuário o valor retornado será -1. Sintaxe : <VarInt> = caixadelista.getSelectedIndex(); Exemplo : int x = lista1.getSelectedIndex(); getItemCount(): Retorna o numero de itens da lista. Sintaxe : <VarInt> = caixadelista. getItemCount(); Exemplo: int y = lista1. getItemCount(); getItem(<Indice>): Captura o elemento baseado no índice anteriormente selecionado na lista. Sintaxe : <VarString> = caixadelista.getItem(<Indice>); Exemplo : int k = lista1.getSelectedIndex(); String dado = lista1.getItem(k); remove(): Apaga um elemento da lista apontado pelo índice selecionado. Sintaxe : Caixadelista.remove(<Indice>); Caixadelista.removeAll(); - Remove todos os elementos da lista. Exemplo : int k = lista1.getSelectedIndex(); lista.remove(k); Métodos de controle do formulário. SetTitle() : Define o título do formulário na linha de Título. Sintaxe : SetTitle(<String>); Exemplo : SetTitle("Awt-Java"); reshape() : Especifica as coordenadas do tamanho do formulário. Sintaxe : reshape(x1,y1,x2,y2); Onde : x1,y1 - São as coordenadas superiores. x2,y1 - São as coordenadas inferiores. (São dadas em Pixels) Exemplo : reshape( 100,100,200,200 ); Exemplo da referencia das coordenadas do formulário. show() : Método que exibe o formulário na tela. Exemplo : show(); Obs : Caso o método show() não seja colocado no programa o formulário não será exibido. setResizable() - Ativa ou desativa a propriedade de restaurar o formulário.(true/false) Sintaxe : setResizable(<boolean>); Exemplo : setResizable(false); setEnabled() - Habilita ou desabilita um determinado objeto. (true/false) Sintaxe : <Objeto>.setEnabled(<Boolean>); Exemplo : Método setEnabled() Exemplo : : tela2 = new Panel(); b1 = new Button(" OK "); add("South",tela2); tela2.add(b1); b1.setEnabled(false); : : Classes para controle de cores e fontes. Color() - Para se setar a palheta de cores para um objeto é preciso criar um objeto de cores com a classe Color() que trabalha no padrão RGB. Sintaxe : (Instancia) Color cor = new Color(R,G,B); Demonstração da Tabela RGB abaixo. Métodos que ligam a paleta de cores. setBackground() - Ativa a cor no fundo do objeto. setForeground() - Ativa a cor na borda (letra) do objeto. Sintaxe : <Objeto>.setBackground(<Objeto-cor>); ou <Objeto>.setForeground(<Objeto-cor>); Exemplo : setBackground() : tela1 = new Panel(); Label label1 = new Label("Testando Cor"); add("North",tela1); tela1.add(label1); Color corlabel = new Color(255,0,0); label1.setBackground(corlabel); : Exemplo : setForeground() Exemplo : setForeground() : tela1 = new Panel(); Label label1 = new Label("Testando Cor"); add("North",tela1); tela1.add(label1); Color corlabel = new Color(255,0,0); label1. setForeground (corlabel); : Font() - Criando Fonte com a classe Fonte. Sinatxe : Font <Objeto> = new Font(<Letra>,<Estilo>,<Tamanho>); setFont() - Para aplicar a fonte desejada para um objeto é necessário usar o método setFont(); Exemplo : Método setFont() : : tela1 = new Panel(); Label label1 = new Label("Testando Cor"); add("North",tela1); tela1.add(label1); Font fonte = new Font("Times New Romam",Font.ITALIC,12); label1.setFont(fonte); : : Resultado do Método : setFont() SetText()/getText() : setText() Envia uma String para um objeto Botão, Rótulo ou caixa de texto. getText() - captura dados de um objeto. Sintaxe : <Objeto>.setText(<String>); Exemplo : label1.setText("Olá Mundo"); String s = label1.getText(); Trabalhando com Evento Básicos. Para se tratar com eventos em Java usa-se dois métodos principais. (boolean) action e handleEvent() action() Sintaxe do Método : public boolean action(Event evt, Object ob) { : : <Código> handleEvent() Sintaxe do Método : return true; } public boolean handleEvent (Event evt) { : : <Código> return true; } Exemplo Método action() Exemplo Método action() : public boolean action(Event evt, Object ob) { if("Sair".equals(ob)) System.exit(0); return true; } Exemplo do Método : handleEvent () Exemplo Método handleEvent () : public boolean handleEvent(Event evt) { switch(evt.id) { case Event.ACTION_EVENT: if("Sair".equals(evt.arg)) System.exit(0); if("Ok".equals(evt.arg)) text1.setEnabled(true); return true; case Event.WINDOW_DESTROY: System.exit(0); return true; } return true; } Programa Exemplo import java.lang.*; import java.awt.*; public class matl extends Frame { Panel tela; Panel pbotao; Label rotulo; Button b1; Font f1; public matl() { setLayout(new BorderLayout()); tela = new Panel(); rotulo = new Label(); add("Center",tela); rotulo.setText("Ola Mundo"); tela.add(rotulo); // Cria Botao pbotao = new Panel(); add("South",pbotao); b1 = new Button("Mostra"); pbotao.add(b1); Button b2 = new Button("Sair"); pbotao.add(b2); f1 = new Font("Time New Roman",Font.ITALIC,12); // Tamanho da fonte e tipo rotulo.setFont(f1); Color cor = new Color(214,205,194); setBackground(cor); reshape(10,10,200,200); // Tamanho da tela. show(); // Exibe Formulario na tela. } public boolean action(Event evt,Object arg) { if("Mostra".equals(arg)) rotulo.setText("Ola Turma"); if("Sair".equals(arg)) System.exit(0); return true; } public static void main(String args[]) { new matl(); } } Swing Vem a um pacote da linguagem Java que se mistura com awt recursos para construção de aplicações gráficas. Aplicação awt Applet Swing Desenhar Para implementar uma aplicação usando Swing é necessário importa o pacote. Exemplo : import javax.swing.*; import java.awt.*; import java.awt.event.*; Criando um objeto (Componente) Para se cria um objeto de formulário usando o pacote Swing é necessário adicional a letra (J) na frente do componente. Exemplo : JFrame, JButton, JLabel etc. Container Component List Button Container Label CheckBox JComponent Window JLabel Frame JButton J(.......) Container A classe Container permite criar umm container para um futuro objeto em tela. Instância com método : getContentPane(); Container tela = getContentPane(); setBounds() Determina em que posição de tela serão colocados os objetos, com relação entre linha e coluna e tamanho do mesmo. Exemplo : <objeto>.setBounds(int x, int y, int l, int a) x – Coluna da tela y – Linha da tela l – Largura do objeto a – Altura do objeto Exemplo : Container tela = getContentPane(); tela.setLayout(null); JLabel rotulo = new JLabel("Seu Nome:"); tela.add(rotulo); rotulo.setBounds(10,5,200,20); JTextField nome = new JTextField(10); tela.add(nome); nome.setBounds(10,30,200,20); JButton – Define Botões de comandos Exemplo : JButton obj1 = new JButton(“Ok”); JButton obj2 = new JButton(“Ok”,icone); JButton obj2 = new JButton(icone); Exemplo: ImageIcon() ImageIcon icone = new ImageIcon(“arq.gif”); JLabel - Define rótulos de mensagens Exemplo: JLabel Obj = new JLabel(“Msg”); JLabel Obj = new JLabel(“Msg”,Icone); JLabel Obj = new JLabel(“Msg”,Icone, posi); Exemplo :ImageIcon() JLabel Obj = new JLabel(“Msg”,Icone, posi); setSize() : Define o tamanho do formulário. Exemplo : setSize(200,100); // Coluna 200 linha 100 setVisible() : Exibe o formulário em modo Swing Exemplo : setVisible(true); // Exibição do Formulário. Exemplo prático : JLabel Obj = new JLabel(“projeto”,”MAbrir.gif”,JLabel.LEFT); JPasswordField() Permite realizar a digitação de caracteres que não serão apresentados na caixa de entrada, exemplo uma senha. Exemplo : JPasswordField caixasenha = new JPasswordField (10); Método: setEchoChar() Determina qual o caractere poderá ser apresentado no momento da digitação da caixa. Exemplo : Padrão ( * ) caixasenha.setEchoChar(‘#'); Método: getPassword() Captura a senha de uma caixa de JPasswordField, esse método irá retorna um vetor de caracteres precisando ser convertidos em String. Exemplo : String senha = new String(caixasenha.getPassword() ); showMessageDialog() Imprime uma mensagem sem forma enviada como parâmetro, sendo os parâmetros opcionais. Sintaxe : Construtor JOptionPane.showMessageDialog( janela, Msg, [Títlo, mType, Icon] ); Exemplo Saída Exemplo : public static void main(String args[]){ Controle5 app = new Controle5(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } Obs : Ao selecionar a opção fechar no formulário todos os componentes serão cancelados e o controle retorna para o sistema operacional que esta sendo usando pelo usuário. Manipulador e Adaptador Eventos addMouseListener( ) Instância da classe JButton, JLabel, etc new MouseAdapter() mouseClicked() Código de programa Obs : O método addMouseListener() deve ser escrito dentro da classe de interface. Exemplo nome = new JTextField(10); tela.add(nome); nome.setBounds(10,25,200,20); JButton btn = new JButton("Ok"); btn.setBounds(10,45,70,20); btn.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent evento) { JOptionPane.showMessageDialog(null,nome.getText()); } } ); // Parenteses Manipulação de Banco de Dados Conectando a uma Base de dados usando o dispositivo de controle e sql (JDBC). Aplicação Banco JDBC Dados Aplicação Orientada a Objetos Padrão MVC (Module View Control) Visão (Interface) Controle Aplicação Browser Visão da Aplicação Java servlet JSP awt Swing JVM JavaBeans APPLET Banco Dados import java.sql.*; Para utilizar uma aplicação JDBC(Java DataBase Connection). É necessário importar o pacote (sql) para que se possa usar os recurso de acesso ao banco de dados. Comunicação com Banco Dados Sistema Operacional Banco de Dados Aplicação (Java) JDBC Class.forName() Instanciando um Driver padrão para que o Java possa reconhecer qual tipo de Drive o sistema operacional usado irá buscar no momento da execução do programa. Exemplo : Class.forName("com.mysql.jdbc.Driver"); Exemplo de Conexão Class.forName("com.mysql.jdbc.Driver"); Seria a Driver de conexão entre o banco de dados e as instruções SQL. DriverManager Sua principal responsabilidade é manter uma lista de implementações de driver e apresentar a uma aplicação que responda a URL requisitada. Autenticação DriverManager Banco, Senha, Usuário Função do Driver ODBC Aplicação Data Warehouse DriverManager Banco Dados Access Banco Dados Banco Dados Oracle SQL-SERVER Connection A Classe Connection permite representar uma única conexão de banco de dados lógico. Ou seja, você usa a classe Connection para enviar uma série de instruções SQL ao banco de dados e controlar o registro ou aborto das instruções. Exemplo : DriverManager String c_user=“root”; String c_senha=""; String c_fonte="jdbc:mysql://localhost/NomeBancodeDados"; Connection con; con=DriverManager.getConnection(c_fonte,c_user,c_senha); Statement Cria uma conexão física direta com a base dados reconhecida por DriverManager, fazendo com que as instruções SQL possam ser enviadas ao banco de dados especificado. (createStatement()). Exemplo : createStatement() Statement st=con.createStatement(); O método acima permita fazer a conexão lógica com a base de dados. Onde st passa a ser um objeto que poderá ser tratado com uma instrução SQL. Linguagem SQL Vem a ser uma linguagem de manipulação de dados com instruções declarativas que permite facilitar o acesso de (Inserção, Deleção, Consulta e Atualização) e criação em tabelas de bancos de dados. DML(Linguagem Manipulação de Dados). PROGRAMAS API´S SGBD DML DADOS Programadores Instruções Básicas de SQL(DML) • • • • Insert - Grava dados em uma tabela. Delete - Apaga dados de uma tabela. Update - Altera dados de uma tabela. Select - Consulta dados de uma tabela. executeUpdate() Método que permite executar uma instrução SQL direta ou seja (Delete, Update ou Insert). Exemplo de Insert st.executeUpdate(”Insert Into Tabela (Nome, Fone) Values ( ‘Ana’ , ’666666’ ) “); Exemplo de Delete st.executeUpdate(”Delete From tabela where nome = ‘José da Silva’ “); Exemplo de Update st.executeUpdate(”Update Tabela set nomeAluno = ‘Maria da Coves’ Where Codigo = ‘001’ “); Exemplo de Insert com dados sql = “insert into consulta(paciente,medico) values( “ ; sql = sql + “ ‘ “ + vpaciente + “ ‘, “ ; sql = sql + “ ‘ “ + vmedico + “ ‘ “+” ) ” ; int reg = st.executeUpdate(str1); Exemplo de Update com dados str1 = “update agendamento set nome = ‘ “+ vnome + “ ‘ where codigo = ‘ “ +tcc+ “ ‘ “; int reg = st.executeUpdate(str1); Abertura de um cursor para localização em arquivo. Banco Dados Jose Pedro Paulo Roberta ResultSet Movimentação para um tipo de navegação para conjunto de resultados. Realizar a navegação seqüencial no registros do banco de dados(Sempre do primeiro para o último). executeQuery() Método usado para enviar instruções de consulta ao banco de dados ou seja Select. Onde ResultSet será o resultado da consulta. Exemplo : ResultSet rs=st.executeQuery("SELECT * FROM TABELA"); first() Posiciona o ponteiro no inicio da tabela em um banco de dados. Exemplo : rs.first(); next() Move o ponteiro para o próximo registro em um banco de dados. Exemplo : rs.next(); close() Método close(), fecha uma conexão feita a uma tabela de um banco de dados. Exemplo : con.close(); try { ..} catch() {...} Tratamento de Exceções (Erros). try { //..... Codificação para tratamento do Banco de dados. } catch( SQLException/Exception Objeto) { System.out.println(e.getMessage()); // Tratamento em caso de Erros } Exemplo try{ String c_user=""; String c_senha=""; String c_fonte="jdbc:odbc:Banco"; Connection con; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection(c_fonte,c_user,c_senha); System.out.println("Conexao MS-ACCESS O.K."); Statement st=con.createStatement(); ResultSet rs=st.executeQuery("SELECT * FROM TABELA1"); while(rs.next()){ String w_nome=rs.getString("nome"); System.out.println("Nome: " + w_nome.trim() ); } con.close(); } catch( Exception e) { System.out.prinln(“Erro na Abertura do banco de Dados”); }