Você está na página 1de 38

Engenharia Software 3 12/02/2019

Configuração de Componentes
Interface Gráfica Java com NetBeans
Repositório em Banco de Dados

Profa. Divani Barbosa Gavinier


1

Emulando servidor
local com XAMPP

profa. Divani Barbosa 1


Engenharia Software 3 12/02/2019

 Para abrir o emulador clique em:


 A seguinte janela aparecerá:

Clique no botão Start a


frente do modulo MySQL

 Para abrir o emulador clique em:


 A seguinte janela aparecerá:

As seguintes
linhas de código
devem aparecer

profa. Divani Barbosa 2


Engenharia Software 3 12/02/2019

Criando Banco de
Dados com
MySQL Workbench

 Para abrir o banco de dados clique em:

 A seguinte janela aparecerá:

Clique na conexão

profa. Divani Barbosa 3


Engenharia Software 3 12/02/2019

 Se a seguinte janela aparecer:

 Clique em Continue Anyway

 A seguinte janela aparecerá:

profa. Divani Barbosa 4


Engenharia Software 3 12/02/2019

 Escreva o seguinte código abaixo na janela Query 1:

create database agenda;


use agenda;
create table tabela (
id int not null auto_increment,
nome varchar(100),
ddd varchar(5),
tel varchar(20),
primary key (id)
);

 Ele deve aparecer como abaixo:


Clique no ícone em forma
de raio para executar as
linhas de comando
digitadas

10

profa. Divani Barbosa 5


Engenharia Software 3 12/02/2019

 Na janela Navigator aparecerá o banco de dados criado:

Caso o banco de dados criado não


apareça clique no ícone de Reflesh

O banco de
dados deverá
conter as
seguintes
colunas

11

Criando Aplicação e
Interface Grafica Java
com NetBeans

12

profa. Divani Barbosa 6


Engenharia Software 3 12/02/2019

 Para criar uma nova aplicação clique em:


Arquivo → Novo Projeto → Java → Proximo.
 Vá até Nome de Projeto e escreva: AgendaTelBD

 Tire a opção Criar Classe Principal

 Clique em Finalizar

13

 Clique com o botão direito do mouse em:


Bibliotecas – Adicionar Biblioteca

14

profa. Divani Barbosa 7


Engenharia Software 3 12/02/2019

 Escolha a opção Driver JDBC do MySQL e pressione ENTER

15

 Selecione a aba Serviços.  Clique com o botão direito


do mouse em Banco de
Dados

 Selecione Nova Conexão...

16

profa. Divani Barbosa 8


Engenharia Software 3 12/02/2019

 A janela de Assistente de Nova Conexão irá aparecer


 Selecione a opção MySQL (Connector/J driver)

 Clique em Próximo

17

 Vai aparecer a seguinte janela:


 Nomeie o banco de dados como agenda

18

profa. Divani Barbosa 9


Engenharia Software 3 12/02/2019

 Vai aparecer a seguinte janela:


 Nomeie o banco de dados como agenda

 Usuário: root
 Como nosso banco não tem
senha, deixe o campo vazio.

 Clique em
Testar Conexão

19

 Se a conexão foi bem sucedida, vai aparecer a seguinte


mensagem:

 Clique em Finalizar

20

profa. Divani Barbosa 10


Engenharia Software 3 12/02/2019

 Ao expandir o banco de dados agenda é possível ver a Tabela e


seus campos:

21

 Volte a aba Projetos.

22

profa. Divani Barbosa 11


Engenharia Software 3 12/02/2019

 Para criar um novo pacote clique com o botão direito do mouse


em: Pacotes de Códigos-fonte → Novo → Pacote Java.

23

 Crie quatro pacotes: connection, model.bean, model.dao e view:

24

profa. Divani Barbosa 12


Engenharia Software 3 12/02/2019

 Para criar uma classe clique com o botão direito do mouse em:
connection → Novo → Classe Java.

25

 Crie a classe: ConnectionFactory dentro do pacote connection

 Crie a classe: Table dentro do pacote model.bean

 Crie a classe: TableDAO dentro do pacote model.dao

26

profa. Divani Barbosa 13


Engenharia Software 3 12/02/2019

 Abra a classe Table de model.bean

27

 Escreva o código abaixo na aba Código-Fonte:

28

profa. Divani Barbosa 14


Engenharia Software 3 12/02/2019

 Dentro da aba Código-Fonte pressione as teclas ALT e INSERT


simultaneamente
 O seguinte Menu aparecerá

Selecione a opção
Getter e Setter

29

 Selecione todos os
campos da janela
Gerar Getters e Setters

 Pressione Gerar

30

profa. Divani Barbosa 15


Engenharia Software 3 12/02/2019

 Salve o código gerado, para isso pressione

31

 Abra a classe ConnectionFactory de connection

32

profa. Divani Barbosa 16


Engenharia Software 3 12/02/2019

 Copie e cole o código abaixo:


package connection;
import java.sql.*;
import java.util.logging.*;

public class ConnectionFactory {


private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL ="jdbc:mysql://localhost:3306/agenda";
private static final String USER ="root";
private static final String PASS = "";

public static Connection getConnection() {


try {
Class.forName(DRIVER);
return DriverManager.getConnection(URL, USER, PASS);
} catch (ClassNotFoundException | SQLException ex)
{ throw new RuntimeException("Erro na conexão:",ex); }
}

public static void closeConnection(Connection con) {


try {
if(con!=null) con.close();
} catch (SQLException ex)
{ Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex); }
}
// Continua ....

33

// Continuação ....

public static void closeConnection(Connection con, PreparedStatement stmt) {


closeConnection(con);
try {
if(stmt != null) stmt.close();
} catch (SQLException ex)
{ Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex); }
}

public static void closeConnection(Connection con, PreparedStatement stmt, ResultSet rs)


{
closeConnection(con, stmt);
try {
if(rs != null) rs.close();
} catch (SQLException ex)
{ Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex); }
}

} // fim da Classe ConnectionFactory

 Salve o código gerado

34

profa. Divani Barbosa 17


Engenharia Software 3 12/02/2019

 Abra a classe TableDAO de model.dao

35

 Copie e cole o código abaixo:


package model.dao;
import connection.ConnectionFactory;
import java.sql.*;
import java.util.*;
import javax.swing.JOptionPane;
import model.bean.Table;

public class TableDAO {

public void create(Table p) {


Connection con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
try {
stmt = con.prepareStatement("INSERT INTO tabela (nome,ddd,tel) VALUES(?,?,?) ");
stmt.setString(1,p.getNome());
stmt.setString(2,p.getDdd());
stmt.setString(3, p.getTel());
stmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Salvo com sucesso");
} catch (SQLException ex)
{ JOptionPane.showMessageDialog(null, "Erro ao salvar: "+ex); }
finally { ConnectionFactory.closeConnection(con,stmt); }
}
// Continua...

36

profa. Divani Barbosa 18


Engenharia Software 3 12/02/2019

// Continuação...

public List<Table> read() throws SQLException {


Connection con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
List<Table> produtos = new ArrayList<>();
try {
stmt = con.prepareStatement("SELECT * FROM tabela");
rs = stmt.executeQuery();
while (rs.next()) {
Table produto = new Table();
produto.setId(rs.getInt("id"));
produto.setNome(rs.getString("nome"));
produto.setDdd(rs.getString("ddd"));
produto.setTel(rs.getString("tel"));
produtos.add(produto);
}
} catch (SQLException ex)
{ JOptionPane.showMessageDialog(null, "Erro na leitura: "+ex); }
finally { ConnectionFactory.closeConnection(con, stmt, rs); }
return produtos;
}

// Continua ....

37

// Continuação...

public void update(Table p) {


Connection con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
try {
stmt=con.prepareStatement("UPDATE tabela SET nome = ?, ddd = ? ,tel = ? WHERE id = ?");
stmt.setString(1, p.getNome());
stmt.setString(2, p.getDdd());
stmt.setString(3, p.getTel());
stmt.setInt(4, p.getId());
stmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Atualizado com sucesso");
} catch (SQLException ex)
{ JOptionPane.showMessageDialog(null, "Erro ao atualizar: "+ex); }
finally { ConnectionFactory.closeConnection(con,stmt); }
}
// Continua ....

38

profa. Divani Barbosa 19


Engenharia Software 3 12/02/2019

// Continuação...

public void delete(Table p) {


Connection con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
try {
stmt = con.prepareStatement("DELETE FROM tabela WHERE id = ?");
stmt.setInt(1, p.getId());
stmt.executeUpdate();
JOptionPane.showMessageDialog(null, "Excluido com sucesso");
} catch (SQLException ex)
{ JOptionPane.showMessageDialog(null, "Erro ao excluir: "+ex); }
finally { ConnectionFactory.closeConnection(con,stmt); }
}

public List<Table> readForDesc(String desc) throws SQLException {


Connection con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
List<Table> produtos = new ArrayList<>();
try {
stmt = con.prepareStatement("SELECT * FROM tabela WHERE nome LIKE ?");
stmt.setString(1, "%"+desc+"%");
rs = stmt.executeQuery();

// Continua....

39

// Continuação...

while (rs.next()) {
Table produto = new Table();
produto.setId(rs.getInt("id"));
produto.setNome(rs.getString("nome"));
produto.setDdd(rs.getString("ddd"));
produto.setTel(rs.getString("tel"));
produtos.add(produto);
}
} catch (SQLException ex)
{ JOptionPane.showMessageDialog(null, "Erro na leitura: "+ex); }
finally { ConnectionFactory.closeConnection(con, stmt, rs); }
return produtos;
}

40

profa. Divani Barbosa 20


Engenharia Software 3 12/02/2019

 Para criar um novo JFrame clique com o botão direito do mouse em:
view → Novo → Form JFrame.

41

 Nomeie como: ViewJTable


 Clique em Finalizar

42

profa. Divani Barbosa 21


Engenharia Software 3 12/02/2019

 Aparecerá um formulário igual ao abaixo:

As seguintes guias do
Formulário serão apresentadas:
Código-
Código-Fonte,
Fonte Projeto e
Histórico.
Histórico

A guia que usaremos para


visualizar e criar o formulário é
a Projeto.
Projeto

Podemos mudar o tamanho do


formulário por meio das bordas.
Basta clicar arrastar as bordas.

43

 Insira 4 Campos de Texto,


Texto os campos de texto ficam na janela
Paleta a esquerda, para inserir basta clicar no mesmo mantendo o
botão do mouse pressionado e soltar dentro do formulário na
posição desejada, como demonstrado abaixo:

44

profa. Divani Barbosa 22


Engenharia Software 3 12/02/2019

 Para alterar o tamanho do campo do texto: Clique nas bordas do


mesmo e arraste

45

 Insira 4 Label,
Label os labels são rótulos que permite-lhe ter algum
texto que você não deseja que o usuário altere, como uma legenda
sob um gráfico. O Label fica na janela Paleta a esquerda, para
inserir basta clicar no mesmo mantendo o botão do mouse
pressionado e soltar dentro do formulário na posição desejada,
como demonstrado abaixo:

Assim como o campo de texto, os rótulos


(labels) podem ser movidos, para o mesmo:
Clique nas bordas do mesmo e arraste

46

profa. Divani Barbosa 23


Engenharia Software 3 12/02/2019

 Insira 4 Botões,
Botões o Botão são botões de comando que permitem que
o usuário possa escolher executar algum comando. O Botão fica na
janela Paleta a esquerda, para inserir basta clicar no mesmo
mantendo o botão do mouse pressionado e soltar dentro do
formulário na posição desejada, como demonstrado abaixo:

47

 Para retirar o texto dos Campos de Texto bastas clicar com o botão
direito do mouse sobre o mesmo e pressionar opção Editar Texto:

 Ele vai ficar selecionado em azul, como na imagem abaixo, para


apagar o texto pressione a tecla BackSpace do teclado

 Faça o mesmo para os outros 3 campos do textos

48

profa. Divani Barbosa 24


Engenharia Software 3 12/02/2019

 Para nomear os rótulos clique com o botão direito do mouse sobre


o mesmo e pressione a opção Editar Texto:

 Nomeie os rótulos como demonstrado abaixo:

49

 Para nomear os botões de comandos clique com o botão direito do


mouse sobre o mesmo e pressione a opção Editar Texto:

 Nomeie os botões como demonstrado abaixo:

50

profa. Divani Barbosa 25


Engenharia Software 3 12/02/2019

 Insira uma Tabela,


Tabela ela será usada para demonstrar o conteúdo do
banco de dados de forma atualizada:

51

 Ajuste seu tamanho para que fique com o seguinte layout:

52

profa. Divani Barbosa 26


Engenharia Software 3 12/02/2019

 Clique com o botão direito do mouse sobre a mesma e selecione a


opção Conteúdo da Tabela:

53

 Na aba Colunas clique no Title1 e depois no campo Titulo


escreva ID e pressione a tecla Enter.

54

profa. Divani Barbosa 27


Engenharia Software 3 12/02/2019

 Nomeie os campos de Titulo como demonstrado abaixo:

55

 Na aba Linhas altere o conteúdo de Contagem de 4 para o numero


zero

 Feche a caixa de Dialogo Personalizador

56

profa. Divani Barbosa 28


Engenharia Software 3 12/02/2019

 A JTable deve estar com o seguinte layout:

57

 Para nomear variáveis dos campos de texto clique com o botão


direito do mouse sobre o campo de texto que deseja nomear e
logo após na opção Alterar o Nome da Variável...

 Altere o nome do campo


de texto Nome para
txtNome
58

profa. Divani Barbosa 29


Engenharia Software 3 12/02/2019

 Altere o nome do campo de texto DDD para txtDDD


 Altere o nome do campo de texto Telefone para txtTel
 Altere o nome do campo de texto Localizar para txtBuscaNome

 Atente para que os nomes das variáveis sejam idênticos aos aqui
descriminados, pois, iremos usa-los no desenvolvimento do
programa.

 Clique com o botão direito sobre a Tabela e altere o nome da


variável para jTAgenda

59

 Para dar ação a um botão de comando, clique duas vezes sobre o


mesmo. Ao fazer isso a guia de Código-Fonte será aberta e
aparecerá selecionado em cinza o método onde o código de ação
referente aquele botão deve ser escrito.

60

profa. Divani Barbosa 30


Engenharia Software 3 12/02/2019

 Para dar ação a um botão de comando, clique duas vezes sobre o


mesmo. Ao fazer isso a guia de Código-Fonte será aberta e
aparecerá selecionado em cinza o método onde o código de ação
referente aquele botão deve ser escrito.
 Pressione duas vezes o botão de comando Cadastrar.
 Ao fazer isso a seguinte classe (jButton1ActionPerformed) deve
aparecer, como demonstrado abaixo:

Note que a seguinte mensagem aparece:


// TODO add your handling code here:
Esse é o lugar onde o seu código de ação para o
botão Cadastrar deve ser inserido

61

 Comente o método como feito abaixo, assim ficará claro dentro do


seu código que esse é o método responsável pelo botão Cadastrar:

 Antes de começarmos a escrever os códigos, vamos inserir no


inicio do mesmo a importação das bibliotecas que iremos precisar
(java.io) e (javax.swing).
 Para adiciona-las suba até o inicio do código fonte, linha 1, e
adicione as sete linhas de comando como demonstrado abaixo:

62

profa. Divani Barbosa 31


Engenharia Software 3 12/02/2019

 Será necessário alterar o Construtor da Classe:


 Para isso localize as seguintes linhas de código:

 Modifique essas linhas para que elas fiquem da seguinte forma

public ViewJTable() throws SQLException {


initComponents();
DefaultTableModel modelo = (DefaultTableModel) jTAgenda.getModel();
jTAgenda.setRowSorter(new TableRowSorter(modelo));
readJTable();
}

63

public void readJTable() throws SQLException {


DefaultTableModel modelo = (DefaultTableModel) jTAgenda.getModel();
modelo.setNumRows(0);
TableDAO pdao = new TableDAO();
for (Table p: pdao.read()) {
modelo.addRow(new Object[]{
p.getId(),
p.getNome(),
p.getDdd(),
p.getTel()
});
}
}

public void readJTableForDesc(String desc) throws SQLException {


DefaultTableModel modelo = (DefaultTableModel) jTAgenda.getModel();
modelo.setNumRows(0);
TableDAO pdao = new TableDAO();
for (Table p: pdao.readForDesc(desc)) {
modelo.addRow(new Object[]{
p.getId(),
p.getNome(),
p.getDdd(),
p.getTel()
});
}
}

64

profa. Divani Barbosa 32


Engenharia Software 3 12/02/2019

 Circunde com try/catch a seguinte linha de código do Programa


Principal:

public void run() {


try {
new ViewJTable().setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(ViewJTable.class.getName()).log(Level.SEVERE, null, ex);
}
}

65

 Agora volte para a linha de comando do método do botão de


comando cadastrar:

 Exatamente abaixo da linha do comentário


// MÉTODO DO BOTÃO DE COMANDO CADASTRAR

Adicione as seguintes linhas de comando:


Table p = new Table();
TableDAO dao = new TableDAO();
p.setNome(txtNome.getText());
p.setDdd(txtDDD.getText());
p.setTel(txtTel.getText());
dao.create(p);
txtNome.setText("");
txtDDD.setText("");
txtTel.setText("");
try { readJTable();
} catch (SQLException ex) {
Logger.getLogger(ViewJTable.class.getName()).log(Level.SEVERE, null, ex);
}

66

profa. Divani Barbosa 33


Engenharia Software 3 12/02/2019

 Clique no botão Excluir e insira as seguintes linhas de código:

// METODO DO BOTAO EXCLUIR


if(jTAgenda.getSelectedRow() != -1) {
Table p = new Table();
TableDAO dao = new TableDAO();
p.setId((int)jTAgenda.getValueAt(jTAgenda.getSelectedRow(),0));
dao.delete(p);
txtNome.setText("");
txtDDD.setText("");
txtTel.setText("");
try { readJTable(); }
catch (SQLException ex)
{ Logger.getLogger(ViewJTable.class.getName()).log(Level.SEVERE, null, ex); }
}
else JOptionPane.showMessageDialog(null, "Selecione um produto para excluir.");

67

 Clique no botão Atualizar e insira as seguintes linhas de código:

// METODO DO BOTÃO ATUALIZAR


if(jTAgenda.getSelectedRow() != -1) {
Table p = new Table();
TableDAO dao = new TableDAO();
p.setNome(txtNome.getText());
p.setDdd(txtDDD.getText());
p.setTel(txtTel.getText());
p.setId((int)jTAgenda.getValueAt(jTAgenda.getSelectedRow(),0));
dao.update(p);
txtNome.setText("");
txtDDD.setText("");
txtTel.setText("");
try { readJTable();
} catch (SQLException ex) {
Logger.getLogger(ViewJTable.class.getName()).log(Level.SEVERE, null, ex);
}
}

68

profa. Divani Barbosa 34


Engenharia Software 3 12/02/2019

 Clique no botão Buscar e insira as seguintes linhas de código:

// METODO DO BOTAO BUSCAR


try {
readJTableForDesc(txtBuscaNome.getText());
} catch (SQLException ex) {
Logger.getLogger(ViewJTable.class.getName()).log(Level.SEVERE, null, ex);
}

69

 Para isso clique com o botão direito do mouse na Tabela, o


seguinte Menu aparecera.
 Depois clique em: Eventos → Key → KeyReleased.

70

profa. Divani Barbosa 35


Engenharia Software 3 12/02/2019

 O método jTAgendaKeyReleased aparecera:

 Insira as seguintes linhas de código dentro desse método:

if (jTAgenda.getSelectedRow() != -1) {
txtNome.setText(jTAgenda.getValueAt(jTAgenda.getSelectedRow(),1).toString());
txtDDD.setText(jTAgenda.getValueAt(jTAgenda.getSelectedRow(),2).toString());
txtTel.setText(jTAgenda.getValueAt(jTAgenda.getSelectedRow(),3).toString());
}

71

 Clique novamente com o botão direito do mouse na Tabela, e


depois clique em: Eventos → Mouse → mouseClicked

72

profa. Divani Barbosa 36


Engenharia Software 3 12/02/2019

 O método jTAgendaMouseClicked aparecera:

 Insira as seguintes linhas de código dentro desse método:

if (jTAgenda.getSelectedRow() != -1) {
txtNome.setText(jTAgenda.getValueAt(jTAgenda.getSelectedRow(),1).toString());
txtDDD.setText(jTAgenda.getValueAt(jTAgenda.getSelectedRow(),2).toString());
txtTel.setText(jTAgenda.getValueAt(jTAgenda.getSelectedRow(),3).toString());
}

73

 Antes de executar, certifique-se que o XAMPP esteja aberto.


 Para executar clique com o botão direito em ViewJTable e depois
em executar arquivo.

74

profa. Divani Barbosa 37


Engenharia Software 3 12/02/2019

75

profa. Divani Barbosa 38