APOSTILA DE JAVA – JMENU E JTABLE
JMENU:
O objeto que serve de base é a Barra de Menu, adicionado diretamente ao
JFrame, e sobre ele vão todas os outros itens relacionados ao menu. Depois,
para cada menu temos o objeto Menu, e dentro do de cada Menu temos os
Itens de Menu.
JFORMATTEDTEXTFIELD
São campos parecidos com a JTextField - o usuário pode escrever dentro
normalmente. Só que agora o número de caracteres digitáveis é limitado, pode-se
limitar o tipo de caracter digitado, e pode-se fazer o campo já esperar com alguns
sinais prontos. É isso o que se usa nos campos onde uma pessoa deve digitar seu CPF e
a caixinha de texto já vem com os pontos e o traço. Para configurar o campo a
Propriedade FORMATTERFACTORY e selecionar o padrão de configuração para o
campo desejado.
# => Somente números.
U => Qualquer caractere. Todas as letras minúsculas são transformadas em maiúsculas.
L => Qualquer caractere. Todas as letras maiúsculas são transformadas em minúsculas.
A => Qualquer caractere ou digito
? => Qualquer caractere
H => Qualquer caractere hexadecimal (0-9, a-f ou A-F)
BANCO DE DADOS UTILIZANDO JTABLE:
CRIAR O BANCO DE DADOS NO POSTGRESQL: AulaJTABLE
NETBEANS:
Criar a interface do JFrame com base na tabela do Banco de Dados:
//Importações das bibliotecas
import java.sql.*;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
//Declarações das variáveis do projeto
private String driver = "org.postgresql.Driver"; //Classe do driver JDBC
private String banco = "AulaJTABLE"; //Nome do Banco de Dados que irá utilizar
private String host = "localhost"; //Computador onde está o banco
private String str_conn = "jdbc:postgresql://localhost:5432/"+banco; //URL de conexão
private String usuario = "postgres"; //Usuário do banco
private String senha = "root"; //Senha de conexão
public static Connection con; //Controla a conexão com o Banco de Dados
private Statement stmt; //Controla statement para enviar o código em SQL
private ResultSet rs; //Recebe o resultado do código em SQL
public String sql; //Recebe o código em SQL
Para definir os nomes das colunas no JTable:
BOTÃO CONSULTAR:
try {
Class.forName(driver); //Carrega o driver
//Obtém a conexão com o banco
con = DriverManager.getConnection(str_conn, usuario, senha);
//Cria um statement para podermos mandar um SQL para o banco
stmt = con.createStatement();
//Codigo em SQL para filtrar os dados da tabela CLIENTE
sql = "SELECT * FROM cliente ORDER BY codigo";
//Executa a instrução em SQL
rs = stmt.executeQuery(sql);
//Verifica se a tabela CLIENTE possui algum registro
if (rs == null) {
return;
}
//Variavel que irá receber os valores cadastrados na tabela CLIENTE
ResultSetMetaData rsmd;
rsmd = rs.getMetaData();
//Construtor que irá controlar o numero de colunas
Vector vetColuna = new Vector();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
vetColuna.add(rsmd.getColumnLabel(i + 1));
}
//Construtor que irá controlar o numero de linhas
Vector vetLinhas = new Vector();
//Verifica se possui um proximo registro
while (rs.next()) {
Vector vetLinha = new Vector();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
vetLinha.add(rs.getObject(i + 1));
}
//Insere as linhas na tabela do formulario
vetLinhas.add(vetLinha);
//Desenha a tabela com os valores de linha e coluna referentes a tabela CLIENTE
jTable1.setModel(new DefaultTableModel(vetLinhas, vetColuna));
}
//Tratamento de erros
} catch (ClassNotFoundException ex) {
System.out.println("Não foi possível carregar o driver.");
ex.printStackTrace();
} catch (SQLException ex) {
System.out.println("Problema com o SQL");
ex.printStackTrace();
}
BOTÃO EXCLUIR:
int i = 0;
try {
Class.forName(driver); //Carrega o driver
//Obtém a conexão com o banco
con = DriverManager.getConnection(str_conn, usuario, senha);
//Cria um statement para podermos mandar um SQL para o banco
stmt = con.createStatement();
//Variavel que ira receber o numero da linha selecionada no JTABLE
String valorSelecionado = jTable1.getValueAt(jTable1.getSelectedRow(),
jTable1.getSelectedColumn()).toString();
//Tela de confirmação para excluir o registro selecionado
int status = JOptionPane.showConfirmDialog(null, "Deseja excluir o item " + valorSelecionado +
"?", "Atenção", JOptionPane.YES_NO_OPTION);
//Verifica se o botão clicado na tela de confirmação foi o YES
if (status == JOptionPane.YES_OPTION) {
//Codigo em SQL para excluir o registro selecionado
sql = "DELETE FROM cliente WHERE codigo = " + valorSelecionado;
//Executa a instrução em SQL
stmt.executeUpdate(sql);
//Mostra uma tela de informação que o registro foi excluído do banco
JOptionPane.showMessageDialog(null, "Excluído com sucesso");
}
//Tratamento de erros
} catch (ClassNotFoundException ex) {
System.out.println("Não foi possível carregar o driver.");
ex.printStackTrace();
} catch (SQLException ex) {
System.out.println("Problema com o SQL");
ex.printStackTrace();
}
BOTÃO ATUALIZAR:
try {
//Codigo em SQL para atualizar os registros atraves dos valores existentes nos TextFields
sql = "update cliente set nome = '" + jTextField2.getText() + "',idade='" + jTextField3.getText()
+ "' where codigo = " + jTextField1.getText();
//Executa a atualização dos dados no banco de dados
stmt = con.createStatement();
stmt.executeUpdate(sql);
//Encerra a conexão com o banco de dados
stmt.close();
con.close();
//Tratamento de erro
} catch (SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}
//Tela de confirmação dos dados atualizados
JOptionPane.showMessageDialog(null, "Registro atualizado com sucesso!");
BOTÃO INSERIR:
try {
Class.forName(driver); //Carrega o driver
//Obtém a conexão com o banco
con = DriverManager.getConnection(str_conn, usuario, senha);
//Cria um statement para podermos mandar um SQL para o banco
stmt = con.createStatement();
//Mandamos o SQL para o banco e obtemos um ResultSet
String sql = "INSERT INTO cliente (codigo,nome,idade) VALUES (' "
+ jTextField1.getText() + " ',' "
+ jTextField2.getText() + " ',' "
+ jTextField3.getText() + " ') ";
stmt.executeUpdate(sql);
JOptionPane.showMessageDialog(null, "Gravação realizado com sucesso!");
//Tratamento de erros
}catch (ClassNotFoundException ex) {
System.out.println("Não foi possível carregar o driver.");
ex.printStackTrace();
} catch (SQLException ex) {
System.out.println("Problema com o SQL");
ex.printStackTrace();
}