O trabalho é um cadastro de livros, quando clica em Ok ele mostra os dados em uma jTable e salva no banco. Quando se clica em numa linha da jTable aparece os dados nos TextFields. Quando se clica em Excluir, exclui a linha selecionada e os dados daquele livro, do banco. Quando se clica em Alterar, você altera um dado daquele livro, salvando o novo dado no banco e alterando a jTable.
É o seguinte, eu tenho esse trabalho da escola pra terminar, mas to com os seguintes problemas:
TelaLivro
package fronteira;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import modelo.Livro;
import persistencia.PerLivro;
/**
*
* @author Administrador
*/
public class TelaLivro extends javax.swing.JFrame {
String isbn;
/** Creates new form NewJFrame */
public TelaLivro() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jDesktopPane1 = new javax.swing.JDesktopPane();
lblEdicao = new javax.swing.JLabel();
lblTitulo = new javax.swing.JLabel();
lblAutor = new javax.swing.JLabel();
lblEditora = new javax.swing.JLabel();
txtAutor = new javax.swing.JTextField();
txtEdicao = new javax.swing.JTextField();
txtEditora = new javax.swing.JTextField();
lblISBN = new javax.swing.JLabel();
lblGenero = new javax.swing.JLabel();
txtGenero = new javax.swing.JTextField();
bttLimpar = new javax.swing.JButton();
txtISBN = new javax.swing.JTextField();
bttOk = new javax.swing.JButton();
lblTipo = new javax.swing.JLabel();
txtTipo = new javax.swing.JTextField();
txtTitulo = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
tblLivro = new javax.swing.JTable();
bttAlterar = new javax.swing.JButton();
bttExcluir = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Cadastrar Livros");
lblEdicao.setText("Edição");
lblTitulo.setText("Titulo");
lblAutor.setText("Autor");
lblEditora.setText("Editora");
txtAutor.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtAutorActionPerformed(evt);
}
});
txtEdicao.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtEdicaoActionPerformed(evt);
}
});
txtEditora.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtEditoraActionPerformed(evt);
}
});
lblISBN.setText("ISBN");
lblGenero.setText("Gênero");
bttLimpar.setText("Limpar");
bttLimpar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bttLimparActionPerformed(evt);
}
});
txtISBN.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtISBNActionPerformed(evt);
}
});
bttOk.setText("OK");
bttOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bttOkActionPerformed(evt);
}
});
lblTipo.setText("Tipo");
tblLivro.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Titulo", "Autor", "Editora", "Gênero", "Edição", "ISBN", "Tipo"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
tblLivro.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tblLivroMouseClicked(evt);
}
});
jScrollPane1.setViewportView(tblLivro);
bttAlterar.setText("Alterar");
bttAlterar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bttAlterarActionPerformed(evt);
}
});
bttExcluir.setText("Excluir");
bttExcluir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bttExcluirActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 599, Short.MAX_VALUE)
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblEdicao, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(lblTitulo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblAutor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblEditora))
.addComponent(bttAlterar))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(bttExcluir)
.addGap(187, 187, 187)
.addComponent(bttLimpar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(bttOk, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(txtTitulo, javax.swing.GroupLayout.DEFAULT_SIZE, 528, Short.MAX_VALUE)
.addComponent(txtAutor, javax.swing.GroupLayout.DEFAULT_SIZE, 528, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(txtEditora, javax.swing.GroupLayout.PREFERRED_SIZE, 217, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblGenero)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtGenero))
.addGroup(layout.createSequentialGroup()
.addComponent(txtEdicao, javax.swing.GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblISBN, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtISBN, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblTipo, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtTipo, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGap(4, 4, 4)
.addComponent(txtTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE, false)
.addComponent(lblAutor, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtAutor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblEditora)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addGap(6, 6, 6)
.addComponent(lblGenero))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtGenero, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtEditora, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblEdicao)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE, false)
.addComponent(txtEdicao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtTipo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtISBN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblTipo, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblISBN)))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(bttOk)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(bttLimpar)
.addComponent(bttAlterar)
.addComponent(bttExcluir)))
.addGap(19, 19, 19)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void txtAutorActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void txtEdicaoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void txtEditoraActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void bttLimparActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
}
private void txtISBNActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void bttOkActionPerformed(java.awt.event.ActionEvent evt) {
salvar();
Livro livro=new Livro();
livro.setTitulo(txtTitulo.getText());
livro.setAutor(txtAutor.getText());
livro.setEditora(txtEditora.getText());
livro.setGenero(txtGenero.getText());
livro.setIsbn(txtISBN.getText());
livro.setTipo(txtTipo.getText());
livro.setEdicao(Integer.parseInt(txtEdicao.getText()));
PerLivro perlivro=new PerLivro();
perlivro.gravar(livro);
limpar();
}
private void tblLivroMouseClicked(java.awt.event.MouseEvent evt) {
int selecionado = tblLivro.getSelectedRow();
txtTitulo.setText((String) tblLivro.getValueAt(selecionado,0));
txtAutor.setText((String) tblLivro.getValueAt(selecionado,1));
txtEditora.setText((String) tblLivro.getValueAt(selecionado,2));
txtISBN.setText((String) tblLivro.getValueAt(selecionado,5));
txtTipo.setText((String) tblLivro.getValueAt(selecionado,6));
txtGenero.setText((String) tblLivro.getValueAt(selecionado,3));
txtEdicao.setText((String) tblLivro.getValueAt(selecionado,4));
Livro.isbn.setText(txtISBN.getText());
}
private void bttAlterarActionPerformed(java.awt.event.ActionEvent evt) {
PerLivro perlivro=new PerLivro();
perlivro.listar();
}
private void bttExcluirActionPerformed(java.awt.event.ActionEvent evt) {
PerLivro perlivro=new PerLivro();
perlivro.excluir(); // TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TelaLivro().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton bttAlterar;
private javax.swing.JButton bttExcluir;
private javax.swing.JButton bttLimpar;
private javax.swing.JButton bttOk;
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblAutor;
private javax.swing.JLabel lblEdicao;
private javax.swing.JLabel lblEditora;
private javax.swing.JLabel lblGenero;
private javax.swing.JLabel lblISBN;
private javax.swing.JLabel lblTipo;
private javax.swing.JLabel lblTitulo;
private javax.swing.JTable tblLivro;
private javax.swing.JTextField txtAutor;
private javax.swing.JTextField txtEdicao;
private javax.swing.JTextField txtEditora;
private javax.swing.JTextField txtGenero;
private javax.swing.JTextField txtISBN;
private javax.swing.JTextField txtTipo;
private javax.swing.JTextField txtTitulo;
// End of variables declaration
public void limpar(){
txtTitulo.setText(null);
txtAutor.setText(null);
txtEditora.setText(null);
txtISBN.setText(null);
txtTipo.setText(null);
txtGenero.setText(null);
txtEdicao.setText(null);
}
public void salvar(){
DefaultTableModel modelo=(DefaultTableModel) tblLivro.getModel();
String[] linha=new String[7];
linha[0]=txtTitulo.getText();
linha[1]=txtAutor.getText();
linha[2]=txtEditora.getText();
linha[3]=txtGenero.getText();
linha[4]=txtEdicao.getText();
linha[5]=txtISBN.getText();
linha[6]=txtTipo.getText();
modelo.addRow(linha);
tblLivro.setModel(modelo);
//limpar();
}
public void alterar(){
}
}
PerLivro
package persistencia;
import fronteira.TelaLivro;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JOptionPane;
import modelo.Livro;
import fronteira.TelaLivro;
public class PerLivro {
public void excluir() {
String sql="delete from livros where Editora="+TelaLivro.isbn;
try{
Connection conn=Conexao.getConexao();
PreparedStatement pst=conn.prepareStatement(sql);
pst.executeUpdate();
}catch(Exception e){
System.out.println("Erro excluir: "+e.toString());
}
}
public void gravar(Livro livro){
String sql="insert into livros(Titulo,Autor,Editora,Genero,Isbn,Edicao,Tipo)values(?,?,?,?,?,?,?)";
try{
Connection conn=Conexao.getConexao();
PreparedStatement pst=conn.prepareStatement(sql);
pst.setString(1,livro.getTitulo());
pst.setString(2, livro.getAutor());
pst.setString(3, livro.getEditora());
pst.setString(4, livro.getGenero());
pst.setString(5, livro.getIsbn());
pst.setInt(6, livro.getEdicao());
pst.setString(7, livro.getTipo());
pst.executeUpdate();
}catch(Exception e){
System.out.println("Erro ao gravar livro "+e.toString());
}
}
public ArrayList<Livro>listar(){
String sql="select * from livros";
try{
Connection conn=Conexao.getConexao();
PreparedStatement pst=conn.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
ArrayList<Livro> livros= new ArrayList<Livro>();
Livro livro;
while(rs.next()){
livro=new Livro();
livro.setTitulo(rs.getString(1));
livro.setAutor(rs.getString(2));
livro.setEditora(rs.getString(3));
livro.setGenero(rs.getString(4));
livro.setIsbn(rs.getString(5));
livro.setEdicao(rs.getInt(6));
livro.setTipo(rs.getString(7));
livros.add(livro);
}
}
return livros;
}catch(Exception e){
System.out.println("Erro ao gravar livro "+e.toString());
return null;
}
}
}
DELETE: Não consigo deletar apenas um livro, que tem que ser feito pelo ISBN, só que diz que o txtIsbn ta na classe TElaLivro é privado e não pode ser acessado por outro pacote.
SELECT: Preciso listar na jTable os livros que já estão no banco, só que quando eu imprimo o ArraList dos livros, vem uns códigos tipo esse "modelo.Livro@09098u", como eu faço pra arrumar isso?
Alguém pode pelo amor de Deus me ajudar? To usando DefaultTableModel porque não sei usar os outros, já li sobre mas não entendi nada.