JAVA UTILIZANDO A IDE NETBEANS Alexander Haroldo da Rocha Renato de Jesus Manzoni
Revisão dos pilares da programação orientada à objeto; ARquive); Cla Classpath e .J .Jar (Java AR quive); Pacote avax.swin .* Conexão com banco de dados via JDBC; Tratamento de Exceções com try-catch-finally; Utilizando o debug do NetBeans; Desenhando primitivas geométricas sobrescrevendo o método
BIBLIOGRAFIA
Deitel, H. M; Deitel, P. J. Java, como programar, programar, 6ª ed. Horstmann, Cay S. e Cornell, Gary. Gary. Core Java 2 – Recursos Avançados, Avançados, vol vol 2, MakR MakRon on Book Books, s, 2001 2001 Seu maior ajudante: www.google.com
Revisão dos pilares da programação orientada à objeto; ARquive); Cla Classpath e .J .Jar (Java AR quive); Pacote avax.swin .* Conexão com banco de dados via JDBC; Tratamento de Exceções com try-catch-finally; Utilizando o debug do NetBeans; Desenhando primitivas geométricas sobrescrevendo o método
BIBLIOGRAFIA
Deitel, H. M; Deitel, P. J. Java, como programar, programar, 6ª ed. Horstmann, Cay S. e Cornell, Gary. Gary. Core Java 2 – Recursos Avançados, Avançados, vol vol 2, MakR MakRon on Book Books, s, 2001 2001 Seu maior ajudante: www.google.com
CONHECENDO A IDE NETBEANS esco r n o o am en e e ap esco apre ren n en o as su suas as facilidades
CONHECENDO A IDE NETBEANS O NetBeans é uma IDE Java desenvolvida pela empresa Sun Microsystems. um am en e e esenvo v men o n egra o gratuito e de código aberto para desenvolvedores . plataformas, como Windows, Linux, Solaris e MacOS.
Dica de Programação - on eça e use o as as ac a es que a tem a oferecer: Hiperlinks, AutoComplet, Solução , .
REVISÃO DE ORIENTAÇÃO À OBJETO ev san o os pr nc pa s conce os e or en aç o a objeto, aplicando essas definições na linguagem Java
POO – REVISÃO DOS CONCEITOS
Motivação: Abstrair os conceitos do mundo real Identificar estes conceitos como objetos
Pilares da Programação Orientada a
Abstração.
Herança;
POO – REVISÃO DOS CONCEITOS
Definindo uma Classe:
Abstração: public class Pessoa {
Atributos da Classe
int idade;
public Pessoa() { }
}
Construtor: toda vez que se cr a um o e o, o cons ru or chamado.
POO – REVISÃO DOS CONCEITOS
Encapsulamento:
Proteger os atributos da classe. .
Omitir detalhes de implementação.
O método oferece um serviço, sem informar como irá fazê-lo.
public class Pessoa { ... void setNome(String nome) { this.nome = nome; } void setSexo(boolean sexo) { this.sexo = sexo; } void setIdade(int idade) { if( idade > 0 ) this.idade = idade; } Garante a integridade do atributo idade }
POO – REVISÃO DOS CONCEITOS pu
c c ass essoa ... boolean getSexo() { return sexo; } int etIdade return idade float getSalario(...) { ... return salario; }
}
Oculta detalhes de im lementa ão
POO – REVISÃO DOS CONCEITOS
Herança:
Classes (sub-classe) que herdam atributos e métodos ublic class Professor extends Pessoa String cursoSuperior; int anoFormação;
} public class Funcionario extends Pessoa { int experienciaProfissional;
}
POO – REVISÃO DOS CONCEITOS
Polimorfismo:
Sobrecarga de Métodos:
o os possuem o mesmo nome, porém número diferentes de parâmetros.
public class Pessoa { return (salario - impostaA); float getSalario(float impostoA, float impostoB) { return (salario - impostaA - impostoB); }
POO – REVISÃO DOS CONCEITOS
Sobrescrita de Métodos: public class Professor extends Pessoa { float getSalario(float impostoA) { re urn sa ar o - mpos o + onus ; }
Métodos possuem o mesmo nome e os mesmos parâmetros, porém o corpo do método é diferente.
O QUE VOCÊ PRECISA SABER EM JAVA Toda classe em Java herda automaticamente da classe Object. ns anc ar o e os:
Pessoa p = new Pessoa();
a er usar os mo
ca ores e acesso:
private: somente a classe que contém seus atributos e . public: Classes que contém atributos e métodos public permitem que outras classes tenham acesso a esses.
Declarar classes abstratas. Isto permite que classes não sejam instanciadas. public abstract class Faculdade { ... }
O QUE VOCÊ PRECISA SABER EM JAVA
Toda classe tem o método toString(). Esse método retorna uma representação String do objeto. .
public class Pessoa { { return nome; } } x: Pessoa p = new Pessoa(); . .
SOFTWARE oç es
s cas e cons ruç o e um so ware
NOÇÕES DE ENGENHARIA DE SOFTWARE Separar o sistema em três camadas básicas: interface, estrutura e persistência; rgan zar-se, segu n o pa r es e desenvolvimento de software;
, cada fase tratando uma parte da aplicação. O fim de uma fase constitui na entrada da outra fase Conhecer noções básicas de atribuição de res onsabilidades; Condicionar ao reuso; Não misturar Interface com Estrutura e vice-versa
NOÇÕES DE ENGENHARIA DE SOFTWARE Boa Prática de Programação - Utilize padrões de escrita de código. o
o
o
o
o
Nome de variáveis e nome de métodos: primeira minúscula e as primeiras da próxima palavra em maiúscula: nomePessoa, inserirFimFila(...) Nome de métodos, como verbos no infinitivo: , Nome de pacotes, classes e imagens começando com letras maiúsculas; Comentários do tipo /* ... */ para principais e do tipo // (linha) para comentários internos; _ atributos;
CLASSPATH E .JAR uma mpor an e var ve e ambiente do Java. Essa variável é importante tanto ara com ilar uanto ara executar o seu ro rama já que especifica onde estão armazenados os arquivos e bibliotecas necessários, tanto para a , .
JAR si nifica Java ARchive e é sim lesmente um arquivo ZIP normal, com uma extensão diferente apenas. Estes arquivos são usados para facilitar a hora de configurar os ambientes de desenvolvimento, uma vez que é possível colocar todos seus pacotes dentro de um único arquivo JAR
CLASSES E MÉTODOS IMPORTANTES
Métodos estáticos das classes Integer, Short, Float, etc:
. Integer.parseInt(String str); setVisible(true | false); setText “strin ” setEnable(true | false);
Classes LinkedList e Arra List; Conceitos de herança e abstrações de classe para sua utilização em listas encadeadas;
PACOTE JAVAX.SWING.*; aco e sw ng e n er ace gr ca o ava
JAVAX.SWING.* Pacote java para desenvolvimento de aplicações com interface gráfica. Substituiu a awt como padrão java, desde o Java 1.2 (Java 2) Cada componente terá vários eventos associados a ele. Alguns eventos são: actionPerformed(...), ... , ... MouseDragged(...), ItemStateChange(...), etc. . Os Conteiners encapsulam Components. - Procure não utilizar os nomes de atributos , jButton1. Mude para botaoCadastrar, por exemplo
JAVAX.SWING.JFRAME do sistema. O método setVisible(true) torna-o visível e o método dis ose fecha o frame. Se for o frame principal, feche com System.exit(0) .
.
_
Constantes usadas no método acima: - NORMAL: Tela no estado normal - ICONIFIED: Tela no estado minimizado - MAXIMIZED_HORIZ: Expansão horizontal - MAXIMIZED_VERT: Expansão vertical - MAXIMIZED_BOTH: Tela maximizada
JLABEL
Componente botão. Assim como qualquer outro , . utilizado apenas como botão simples, mas também como botões de barra de ferramentas, panels, etc.
JCHECKBOX
Caixa de seleção simples. O método isSelected() retorna se está ou não setado.
JRADIOBUTTON E BUTTONGROUP . Cada radioButton é um campo de seleção. Crie um buttonGrou ara formar um ru o de sele ão e então associe cada radioButton ao grupo que desejar, através do atributo buttonGroup.
JTEXTFIELD . Como não há limitação de número de caracteres, . Através de uma classe chamada , esse caso, podemos setar o tamanho máximo do campo. jTextFieldNome.setDocument( new FixedLengthDocument(30) );
JPASSWORDFIELD
O mesmo ara um JTextField orém existirá um caractere indicativo de senha. ( )
JFORMATTEDTEXTFIELD
Exemplos de aplicação: RG, CPF, Datas, etc
r an o uma m scara e orma aç o MaskFormatter formatterData = new MaskFormatter(“##/##/####”); // Instalando a máscara no jFormattedTextField formatterData.install(jFTextFieldNasc); // Setando um texto – 10/12/1990 jFTextFieldNasc.setText(“10121990”); // Aceita com ou sem ‘/’
# - Dígito * - Qualquer tecla – U – Caractere em maiúsculo L – Caractere em minúsculo A – Caractere alfa-numérico ? – Caractere qualquer
JTEXTPANE
Componente botão do tipo pressionado e não . generalidade do JButton
JPANEL componentes. Tem generalidades específicas que veremos mais adiante.
EXERCÍCIO 1A nome (String limitada de tamanho 20), idade (short), dataInscricao (String formatada), moraSozinho . , gets.
Interface e Estrutura devem estar em pacotes separados. Crie dois pacotes com esses nomes; Faça um formulário sobre um jPanel com borda (TitledBorder), como mostra o arquivo ex1a.jar. , classe pessoa e em Cancelar, feche o frame. Os Botões devem estar fora do ainel!
JSCROLLBAR E JSCROLLPANE . Componentes, como tabela, são utilizados dentro de um JScrollPane
JTABBEDPANE
Caixa com abas. A estrutura de um TabbedPane é simples, sendo que cada aba será adicionada através de um Panel.
EXERCÍCIO 1B
Faça um tabbedPane e coloque duas abas: o panel com o pequeno formulário com o nome de Dados Pessoais (nome do atributo – Tab Title)
para CPF e RG, devidamente formatados, como mostra o arquivo ex1b.jar. Os botões de Cadastrar e Cancelar devem estar fora do painel de abas.
JCOMBOBOX Componente que armazena uma lista de objetos, sendo que apenas um é visível. za o m o o o r ng para mos rar a informação visível.
addItem(Object anObject) – Adiciona um objeto ao comboBox. getSelectedItem( ) – Retorna o objeto selecionado. setSelectedItem(Object objeto | int indice) – Seta o objeto como selecionado. Possui dois tipos de parâmetros: o índice do objeto no comboBox ou . removelAllItens() – Remove todos os ítens
JLIST
Semelhante ao ComboBox só ue todos os elementos do List são visíveis e a seleção é feita por linha. É possível também a seleção de várias linhas simultaneamente.
JSPINNER Com onente ue muda os valores através de botões do tipo up-down. (Geralmente para inteiros) setValue(Object value) – Seta o valor do Spinner getValue( ) – Retorna o Objeto indicado no Spinner Utilize o evento StateChan e ara tratar mudan as no Spinner. (Impedir valores negativos, por ex.)
EXERCÍCIO 2 Utilize o arquivo ex2.jar como base. Troque o campo idade por um JSpinner. Limita o p nner e mo o que n o se a poss ve n meros negativos (evento Change – StateChange). , campos para endereço (endereço e cidade) e estado como sendo um ComboBox. colo ue uns 5 UF apenas). Crie apenas campo estado do tipo String na classe Pessoa.java. Mude o construtor da classe Pessoa, de modo que inclua o parâmetro estado (UF). No botão a as rar, ns anc e a c asse essoa com o atributo adicional do estado (UF).
JTABLE . Dados relativos à tabela são armazenados no ob eto model Modelo da tabela Sempre que for trabalhar com os elementos da tabela, utilize o método etModel ara retornar o modelo da tabela. javax.swing.table.DefaultTableModel modelo = avax.swin .table.DefaultTableModel Table. etModel Agora com o modelo da tabela, é possível inserir registros nela.
JTABLE modelo.setRowCount(0); // Adiciona uma linha à tabela modelo.addRow(new Object[ ] { Object1, Object2, ... } ); // Remove uma linha da tabela mo e o.remove ow n ce * * // Retorna o objeto na linha row e coluna column modelo.getValueAt(row,column); // Retorna o número de linhas selecionadas modelo.getSelectedRowCount( ); e orna o n ce a n a se ec ona a, caso se a uma modelo. getSelectedRow( );
EXERCÍCIO 3 , coloque uma tabela com dois campos: nome e estado. Ao clicar em cadastrar é instanciado um ob eto essoa e adicionado na tabela. Depois, apague todos os campos do formulário (crie um método para isso!). Apóie-se no arquivo ex3.jar. Implemente o método toString( ) da classe Pessoa, sen o que e e re ornar o nome a pessoa, e o os os gets( ) da classe (Encapsular campos do NetBeans. . clicar nele, a linha da tabela é buscada e os dados da método System.out.println(...). (java –jar ex3.jar)
JMENUBAR Menu para Frames principais. Utilize a toolbar Inspector do NetBeans. No enu ar, c que com o o o re o o mouse e v em Add.
Add JMenuItem adiciona
um ítem do menu -
menu. entre os itens do menu. Note que JSeparator é um com onente enérico usados em muitos outros objetos, como na jToolBar (barra de ferramentas)
JTOOLBAR Barra de ferramentas. Para adicionar botões ou separadores, escolha o componente que deseja e . Para botões, você pode retirar o texto e colocar . , , atributo icon com a imagem desejada. Utiliza o Classpath para não ter problemas com referência. Assim como no MenuBar é possível adicionar separadores na toolbar. Selecione o atributo floatable se desejar uma toolbar que pode ser deslocada de um lugar para o ou ro.
JPOPUPMENU Menu Popup para componentes Utilize os mesmos princípios do JMenuBar para cr ar ens e menu ao opup enu. Para adicionar o menu Popup em algum , indique o menu Popup que você deseja utilizar.
EXERCÍCIO 4 Igualmente ao arquivo ex4.jar, faça um menuBar e uma toolBar para a aplicação. Não esqueça de . Para isso, crie outro pacote com o nome de Ima ens. Faça um menu Popup para a tabela. Coloque como itens do menu: Deletar Registro, jSeparator e Fechar. Ao clicar em Deletar, remova a linha selecionada na tabela.
JDIALOG Tela de diálogo rápido do usuário com o sistema. Não é um tipo de frame que se usa para fazer . A característica mais marcante desta classe é o
a frente de todas as outras e que você não poderá fazer mais nada enquanto não fechá-la. Exemplos de dialogs são: dialogs para salvar/abrir arquivos, avisos de erro ou informativos, dialogs de mpress o, e c.
JDIALOG JDialogConexao dialogConexao; dialogConexao = new JDialogConexao( ); JDialogConexao(this this,,true true); java.awt.Dimension d = ava.awt. oo t.get e au t oo oo t .get creen ze ; // Posiciona a dialog no centro dialogConexao.setLocation dialogConexao.setLocation(d.width/ (d.width/ 2 dialogConexao.getWidth dialogConexao.getWidth()/ ()/ 2, d.height/ 2 . .
JFILECHOOSER
Classe permite que se escolham arquivos ou diretórios.
JFileChooser jFileChooser = new JFileChooser(); JFileChooser (); // Seleciona somente arquivos jFileChooser.setFileSelectionMode jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); (JFileChooser.FILES_ONLY); if( jFileChooser.showDialog jFileChooser.showDialog(jDialogBuscaBD, (jDialogBuscaBD, "Abrir" "Abrir")) == JFileChooser.CANCEL_OPTION JFileChooser.CANCEL_OPTION ) re urn; urn; String arquivo = jFileChooser. jFileChooser.getSelectedFile(). (); getSelectedFile().getPath getPath();
JFILECHOOSER
Pode-se também adicionar filtros ao fileChooser. Veja os exemplos abaixo:
// Criando um novo filtro filtroJPEG = new FileNameExtensionFilter("JPEG Files", "j g", "JPG", "jpeg","JPEG"); // Existirá um filtro do ti o ‘All Files’ ? fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.addChoosableFileFilter(filtroJPEG);
UM POUCO DA CLASSE FILE A classe File é uma classe genérica para tratamento de arquivos, do tipo verificar se ele , , , . Para salvar ou abrir arquivos utiliza-se outras
arquivos binários e FileReader/Writer para arquivos textos. Não entraremos em detalhes dessas classes, pelo tempo que temos, porém, utilize a descrição destas classes pelo NetBeans. Não é muito complicado!
JDESKTOPPANE E JINTERNALFRAME Muitos aplicativos utilizam uma interface de múltiplos documentos (MDI). as camen e, uma ane a pr nc pa ane a-pa contém outras janelas (janelas-filha) para gerenciar
processados em paralelo.
Deskto Pane.add InternalFrame ; jInternalFrame.setVisible(true); este nterna rame = (JIFTeste)jDesktopPane.getSelectedFrame();
EXERCÍCIO 5 Como o arquivo ex5.jar, coloque o painel de abas em um InternalFrame e faça um desktopPane na janela . , de modo que seja possível abrir o formulário pelo menu e ela toolbar. Não se esqueça de transferir todo o código relativo ao formulário para o InternalFrame, juntamente com as formatações dos TextFields no constrututor do frame, métodos relacionados e o buttonGroup do sexo. Todo o código relativo à tabela deverá ser retirado, removendo até mesmo a tabela e o menu Popup . .
JOPTIONPANE A classe JOptionPane oferece caixas de diálogo predefinidas que permitem aos programas exibir mensagens ao usuário. Abaixo segue alguns métodos desta classe:
a xa e ogo e uma mensagem showMessageDialog(null, "Mensagem", "Título", messageType); // Caixa de diálogo de confirmação showConfirmDialog(null, "Mensagem", "Título", , // Caixa de diálogo de uma entrada s ow npu a og nu , ensagem ,
u o , message ype ;
Constante (optionType)
Descrição
YES_NO_OPTION
Caixa de diálogo do tipo Sim ou Não
YES_NO_CANCEL_OPTION
Caixa de diálogo do tipo Sim, Não ou Cancelar
OK_CANCEL_OPTION
Caixa de diálogo do tipo OK ou Cancelar
Constante (messageType)
Ícone
ERROR_MESSAGE
Descrição usuário
INFORMATION _ MESSAGE
Exibe um diálogo com uma mensagem com n ormaç es para o usu r o
WARNING_MESSAGE
Exibe um diálogo que adverte o usuário sobre um problema em potencial
QUESTION_MESSAGE
Exibe um diálogo que impõe uma pergunta ao usuário. Geralmente exige uma resposta do tipo Sim ou Não
PLAIN_MESSAGE
Sem ícone
Exibe um diálogo que simplesmente contém uma mensagem, sem nenhum ícone
JSLIDER
Componente usado para barra de valores. Você pode escolher o valor mínimo e máximo da barra, .
JPROGRESSBAR
Barra de progresso simples. Contém atributos para também um campo string que pode ser adicionado o cionalmente ara informar a orcenta em corrente.
HTML EM COMPONENTES SWING A interface gráfica Swing aceita códigos HTML para formatação de textos. É simples de usar e muito útil . Para usar, apenas coloque o código HTML pelo “...” .
" color=green> Mundo