Configuração de Componentes
Interface Gráfica Java com NetBeans
Repositório em Banco de Dados
Profa. Divani Barbosa Gavinier
Emulando servidor
local com XAMPP
 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
Criando Banco de
Dados com
MySQL Workbench
 Para abrir o banco de dados clique em:
 A seguinte janela aparecerá:
Clique na conexão
 Clique em Continue Anyway
 Se a seguinte janela aparecer:
 A seguinte janela aparecerá:
 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
Caso o banco de dados criado não
apareça clique no ícone de Reflesh
 Na janela Navigator aparecerá o banco de dados criado:
O banco de
dados deverá
conter as
seguintes
colunas
Criando Aplicação e
Interface Grafica Java
com NetBeans
 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
 Clique com o botão direito do mouse em:
Bibliotecas – Adicionar Biblioteca
 Escolha a opção Driver JDBC do MySQL e pressione ENTER
 Selecione a aba Serviços.  Clique com o botão direito
do mouse em Banco de
Dados
 Selecione Nova Conexão...
 A janela de Assistente de Nova Conexão irá aparecer
 Selecione a opção MySQL (Connector/J driver)
 Clique em Próximo
 Vai aparecer a seguinte janela:
 Nomeie o banco de dados como agenda
 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
 Se a conexão foi bem sucedida, vai aparecer a seguinte
mensagem:
 Clique em Finalizar
 Ao expandir o banco de dados agenda é possível ver a Tabela e
seus campos:
 Volte a aba Projetos.
 Para criar um novo pacote clique com o botão direito do mouse
em: Pacotes de Códigos-fonte → Novo → Pacote Java.
 Crie quatro pacotes: connection, model.bean, model.dao e view:
 Para criar uma classe clique com o botão direito do mouse em:
connection → Novo → Classe Java.
 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
 Abra a classe Table de model.bean
 Escreva o código abaixo na aba Código-Fonte:
 Dentro da aba Código-Fonte pressione as teclas ALT e INSERT
simultaneamente
 O seguinte Menu aparecerá
Selecione a opção
Getter e Setter
 Selecione todos os
campos da janela
Gerar Getters e Setters
 Pressione Gerar
 Salve o código gerado, para isso pressione
 Abra a classe ConnectionFactory de connection
 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 ....
// 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
 Abra a classe TableDAO de model.dao
 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...
// 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 ....
// 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 ....
// 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....
// 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;
}
}
 Para criar um novo JFrame clique com o botão direito do mouse em:
view → Novo → Form JFrame.
 Nomeie como: ViewJTable
 Clique em Finalizar
 Aparecerá um formulário igual ao abaixo:
As seguintes guias do
Formulário serão apresentadas:
Código-Fonte, Projeto e
Histórico.
A guia que usaremos para
visualizar e criar o formulário é
a Projeto.
Podemos mudar o tamanho do
formulário por meio das bordas.
Basta clicar arrastar as bordas.
 Insira 4 Campos de 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:
 Para alterar o tamanho do campo do texto: Clique nas bordas do
mesmo e arraste
 Insira 4 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
 Insira 4 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:
 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
 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:
 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:
 Insira uma Tabela, ela será usada para demonstrar o conteúdo do
banco de dados de forma atualizada:
 Ajuste seu tamanho para que fique com o seguinte layout:
 Clique com o botão direito do mouse sobre a mesma e selecione a
opção Conteúdo da Tabela:
 Na aba Colunas clique no Title1 e depois no campo Titulo
escreva ID e pressione a tecla Enter.
 Nomeie os campos de Titulo como demonstrado abaixo:
 Na aba Linhas altere o conteúdo de Contagem de 4 para o numero
zero
 Feche a caixa de Dialogo Personalizador
 A JTable deve estar com o seguinte layout:
 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
 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
 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
 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.
 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:
 Será necessário alterar o Construtor da Classe:
 Para isso localize as seguintes linhas de código:
public ViewJTable() throws SQLException {
initComponents();
DefaultTableModel modelo = (DefaultTableModel) jTAgenda.getModel();
jTAgenda.setRowSorter(new TableRowSorter(modelo));
readJTable();
}
 Modifique essas linhas para que elas fiquem da seguinte forma
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()
});
}
}
public void run() {
try {
new ViewJTable().setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(ViewJTable.class.getName()).log(Level.SEVERE, null, ex);
}
}
 Circunde com try/catch a seguinte linha de código do Programa
Principal:
 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);
}
 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.");
 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);
}
}
 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);
}
 Para isso clique com o botão direito do mouse na Tabela, o
seguinte Menu aparecera.
 Depois clique em: Eventos → Key → KeyReleased.
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());
}
 Insira as seguintes linhas de código dentro desse método:
 O método jTAgendaKeyReleased aparecera:
 Clique novamente com o botão direito do mouse na Tabela, e
depois clique em: Eventos → Mouse → mouseClicked
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());
}
 Insira as seguintes linhas de código dentro desse método:
 O método jTAgendaMouseClicked aparecera:
 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.
Banco de Dados MySQL + NetBeans Java + Interface Grafica

Banco de Dados MySQL + NetBeans Java + Interface Grafica

  • 1.
    Configuração de Componentes InterfaceGráfica Java com NetBeans Repositório em Banco de Dados Profa. Divani Barbosa Gavinier
  • 2.
  • 3.
     Para abriro emulador clique em:  A seguinte janela aparecerá: Clique no botão Start a frente do modulo MySQL
  • 4.
     Para abriro emulador clique em:  A seguinte janela aparecerá: As seguintes linhas de código devem aparecer
  • 5.
    Criando Banco de Dadoscom MySQL Workbench
  • 6.
     Para abriro banco de dados clique em:  A seguinte janela aparecerá: Clique na conexão
  • 7.
     Clique emContinue Anyway  Se a seguinte janela aparecer:
  • 8.
     A seguintejanela aparecerá:
  • 9.
     Escreva oseguinte 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) );
  • 10.
     Ele deveaparecer como abaixo: Clique no ícone em forma de raio para executar as linhas de comando digitadas
  • 11.
    Caso o bancode dados criado não apareça clique no ícone de Reflesh  Na janela Navigator aparecerá o banco de dados criado: O banco de dados deverá conter as seguintes colunas
  • 12.
    Criando Aplicação e InterfaceGrafica Java com NetBeans
  • 13.
     Para criaruma 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
  • 14.
     Clique como botão direito do mouse em: Bibliotecas – Adicionar Biblioteca
  • 15.
     Escolha aopção Driver JDBC do MySQL e pressione ENTER
  • 16.
     Selecione aaba Serviços.  Clique com o botão direito do mouse em Banco de Dados  Selecione Nova Conexão...
  • 17.
     A janelade Assistente de Nova Conexão irá aparecer  Selecione a opção MySQL (Connector/J driver)  Clique em Próximo
  • 18.
     Vai aparecera seguinte janela:  Nomeie o banco de dados como agenda
  • 19.
     Vai aparecera 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
  • 20.
     Se aconexão foi bem sucedida, vai aparecer a seguinte mensagem:  Clique em Finalizar
  • 21.
     Ao expandiro banco de dados agenda é possível ver a Tabela e seus campos:
  • 22.
     Volte aaba Projetos.
  • 23.
     Para criarum novo pacote clique com o botão direito do mouse em: Pacotes de Códigos-fonte → Novo → Pacote Java.
  • 24.
     Crie quatropacotes: connection, model.bean, model.dao e view:
  • 25.
     Para criaruma classe clique com o botão direito do mouse em: connection → Novo → Classe Java.
  • 26.
     Crie aclasse: ConnectionFactory dentro do pacote connection  Crie a classe: Table dentro do pacote model.bean  Crie a classe: TableDAO dentro do pacote model.dao
  • 27.
     Abra aclasse Table de model.bean
  • 28.
     Escreva ocódigo abaixo na aba Código-Fonte:
  • 29.
     Dentro daaba Código-Fonte pressione as teclas ALT e INSERT simultaneamente  O seguinte Menu aparecerá Selecione a opção Getter e Setter
  • 30.
     Selecione todosos campos da janela Gerar Getters e Setters  Pressione Gerar
  • 31.
     Salve ocódigo gerado, para isso pressione
  • 32.
     Abra aclasse ConnectionFactory de connection
  • 33.
     Copie ecole 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 ....
  • 34.
    // Continuação .... publicstatic 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
  • 35.
     Abra aclasse TableDAO de model.dao
  • 36.
     Copie ecole 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...
  • 37.
    // 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 ....
  • 38.
    // Continuação... public voidupdate(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 ....
  • 39.
    // Continuação... public voiddelete(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....
  • 40.
    // 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; } }
  • 41.
     Para criarum novo JFrame clique com o botão direito do mouse em: view → Novo → Form JFrame.
  • 42.
     Nomeie como:ViewJTable  Clique em Finalizar
  • 43.
     Aparecerá umformulário igual ao abaixo: As seguintes guias do Formulário serão apresentadas: Código-Fonte, Projeto e Histórico. A guia que usaremos para visualizar e criar o formulário é a Projeto. Podemos mudar o tamanho do formulário por meio das bordas. Basta clicar arrastar as bordas.
  • 44.
     Insira 4Campos de 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:
  • 45.
     Para alteraro tamanho do campo do texto: Clique nas bordas do mesmo e arraste
  • 46.
     Insira 4Label, 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
  • 47.
     Insira 4Botõ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:
  • 48.
     Para retiraro 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
  • 49.
     Para nomearos 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:
  • 50.
     Para nomearos 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:
  • 51.
     Insira umaTabela, ela será usada para demonstrar o conteúdo do banco de dados de forma atualizada:
  • 52.
     Ajuste seutamanho para que fique com o seguinte layout:
  • 53.
     Clique como botão direito do mouse sobre a mesma e selecione a opção Conteúdo da Tabela:
  • 54.
     Na abaColunas clique no Title1 e depois no campo Titulo escreva ID e pressione a tecla Enter.
  • 55.
     Nomeie oscampos de Titulo como demonstrado abaixo:
  • 56.
     Na abaLinhas altere o conteúdo de Contagem de 4 para o numero zero  Feche a caixa de Dialogo Personalizador
  • 57.
     A JTabledeve estar com o seguinte layout:
  • 58.
     Para nomearvariá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
  • 59.
     Altere onome 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
  • 60.
     Para daraçã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.
  • 61.
     Pressione duasvezes 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  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.
  • 62.
     Comente omé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:
  • 63.
     Será necessárioalterar o Construtor da Classe:  Para isso localize as seguintes linhas de código: public ViewJTable() throws SQLException { initComponents(); DefaultTableModel modelo = (DefaultTableModel) jTAgenda.getModel(); jTAgenda.setRowSorter(new TableRowSorter(modelo)); readJTable(); }  Modifique essas linhas para que elas fiquem da seguinte forma
  • 64.
    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() }); } }
  • 65.
    public void run(){ try { new ViewJTable().setVisible(true); } catch (SQLException ex) { Logger.getLogger(ViewJTable.class.getName()).log(Level.SEVERE, null, ex); } }  Circunde com try/catch a seguinte linha de código do Programa Principal:
  • 66.
     Agora voltepara 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); }
  • 67.
     Clique nobotã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.");
  • 68.
     Clique nobotã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); } }
  • 69.
     Clique nobotã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); }
  • 70.
     Para issoclique com o botão direito do mouse na Tabela, o seguinte Menu aparecera.  Depois clique em: Eventos → Key → KeyReleased.
  • 71.
    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()); }  Insira as seguintes linhas de código dentro desse método:  O método jTAgendaKeyReleased aparecera:
  • 72.
     Clique novamentecom o botão direito do mouse na Tabela, e depois clique em: Eventos → Mouse → mouseClicked
  • 73.
    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()); }  Insira as seguintes linhas de código dentro desse método:  O método jTAgendaMouseClicked aparecera:
  • 74.
     Antes deexecutar, certifique-se que o XAMPP esteja aberto.  Para executar clique com o botão direito em ViewJTable e depois em executar arquivo.