Olá, estou fazendo um simples sistema de cadastro, alteracao, com botoes de proximo, anterior, ultimo e primeiro…dei conta de fazer o proximo, mas no meu banco tenho 4 registros, e ele mostra apenas o 1 e o 3 registro…gostaria q alguem me dissesse o q ta acontecendo…e se alguem puder me ajudar a fazer o anterior, primeiro e ultimo…agradeceria…vo colocar os meus codigos…
Aluno.java
class Aluno
{
String nome;
String idade;
}
ControleAluno.java
public class ControleAluno
{
private ModeloJdbcAluno modelo;
public ControleAluno()
{
modelo = new ModeloJdbcAluno();
}
public boolean incluiAluno(Aluno x)
{
return modelo.incluiAluno(x);
}
public boolean alteraAluno(Aluno x)
{
return modelo.alteraAluno(x);
}
public void proximoAluno()
{
modelo.proximoAluno();
}
public Aluno alunoCorrente()
{
return modelo.alunoCorrente();
}
public void fechar()
{
modelo.fechar();
}
}
FormularioAluno.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FormularioAluno implements ActionListener
{
private JLabel rotuloNome;
private JLabel rotuloIdade;
private JLabel rotuloTotal;
private JTextField campoNome;
private JTextField campoIdade;
private JPanel painelCima;
private JPanel painelBaixo;
private JButton botaoIncluir;
private JButton botaoSair;
private JButton botaoAlterar;
private JFrame janela;
private JButton botaoPrimeiro;
private JButton botaoAnterior;
private JButton botaoProximo;
private JButton botaoUltimo;
private ModeloJdbcAluno v;
private ControleAluno controle;
public FormularioAluno() //método construtor
{
v = new ModeloJdbcAluno();
janela = new JFrame("Formulario de Cadastro");
rotuloNome = new JLabel("Nome: ");
rotuloIdade = new JLabel("Idade: ");
rotuloTotal = new JLabel("Total de registros: " + v.totalAlunos());
campoNome = new JTextField(20);
campoIdade = new JTextField(20);
painelCima = new JPanel(new GridLayout(3,2));
painelBaixo = new JPanel();
botaoIncluir = new JButton("Incluir");
botaoSair = new JButton("Sair");
botaoAlterar = new JButton("Alterar");
botaoPrimeiro = new JButton("Primeiro");
botaoAnterior = new JButton("Anterior");
botaoProximo = new JButton("Próximo");
botaoUltimo = new JButton("Último");
controle = new ControleAluno();
//coloca dentro da janela o painel de cima e o painel de baixo
janela.setSize(400,400);
janela.getContentPane().add(painelCima, BorderLayout.CENTER);// getContentPane é a área visivel da janela
janela.getContentPane().add(painelBaixo, BorderLayout.SOUTH);
painelBaixo.add(botaoIncluir);
painelBaixo.add(botaoAlterar);
painelBaixo.add(botaoPrimeiro);
painelBaixo.add(botaoAnterior);
painelBaixo.add(botaoProximo);
painelBaixo.add(botaoUltimo);
painelBaixo.add(botaoSair);
painelCima.add(rotuloNome);
painelCima.add(campoNome);
painelCima.add(rotuloIdade);
painelCima.add(campoIdade);
painelCima.add(rotuloTotal);
botaoIncluir.addActionListener(this);//este é um método da classe ActionListener, e ela já sabe que está vinculada ao método actionPerformed, e entra no if, pra saber se é para sair ou incluir
botaoAlterar.addActionListener(this);
botaoSair.addActionListener(this);
botaoProximo.addActionListener(this);
botaoAnterior.addActionListener(this);
}
public void mostrarInterface()
{
janela.pack(); //pack() faz uma compactação para todos os elementos aparecerem na janela economizando espaço
janela.setVisible(true);
}
public void mostrarAluno(Aluno x)
{
controle.proximoAluno();
Aluno temp = controle.alunoCorrente();
campoNome.setText(temp.nome);
campoIdade.setText(temp.idade);
}
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource()==botaoSair) //descobrir quem é que está sendo clicado
{
controle.fechar();
System.exit(0);
}
if(evt.getSource()==botaoIncluir)
{
Aluno aluno = new Aluno();
aluno.nome = campoNome.getText(); //joga o texto para o objeto aluno que foi criado
aluno.idade = campoIdade.getText();
boolean res = controle.incluiAluno(aluno);//chama o método incluiAluno da classe ControleAluno
if (res)
{
JOptionPane.showMessageDialog(null, "Aluno cadastrado com sucesso!");
}
else
{
JOptionPane.showMessageDialog(null, "Falha na inserção dos dados!");
}
}
if(evt.getSource()==botaoAlterar)
{
Aluno aluno1 = new Aluno();
aluno1.nome = campoNome.getText(); //joga o texto para o objeto aluno que foi criado
aluno1.idade = campoIdade.getText();
boolean res = controle.alteraAluno(aluno1);//chama o método alteraAluno da classe ControleAluno
if (res)
{
JOptionPane.showMessageDialog(null, "Aluno alterado com sucesso!");
}
else
{
JOptionPane.showMessageDialog(null, "Falha na alteracao do aluno!");
}
}
if(evt.getSource()==botaoProximo)
{
controle.proximoAluno();
mostrarAluno(controle.alunoCorrente());
}
}
public static void main (String args [])
{
new FormularioAluno().mostrarInterface();
}
}
ModeloJdbcAluno.java
import java.sql.*;
import java.util.*;
class ModeloJdbcAluno
{
private Connection con;
private Statement st;
private ResultSet rs;
private Vector v;
private int registroCorrente = 0;
public ModeloJdbcAluno()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //carrega o drive da ponte jdbc-odbc
con = DriverManager.getConnection("jdbc:odbc:banco"); //abre a conexao com o banco de dados
st = con.createStatement();
carregaAlunos();
}
catch(ClassNotFoundException e)
{
System.out.println("Classe do Drive JDBC nao encontrada");
}
catch(SQLException e)
{
System.out.println("Falha na conexao com o banco de dados "+ e.getMessage());
}
}
public boolean incluiAluno(Aluno x)
{
try
{
int retorno = st.executeUpdate ("INSERT INTO Alunos VALUES('"+x.nome.trim()+"',' "+x.idade.trim()+"')");
return (retorno == 1);//se for igual a 1 retorna true
}
catch(SQLException e)
{
System.out.println("Falha na conexao com o banco de dados "+ e.getMessage());
return (false);
}
}
public boolean alteraAluno(Aluno x)
{
try
{
int retorno = st.executeUpdate ("UPDATE Alunos SET Idade ='"+x.idade.trim()+"' WHERE Nome ='"+x.nome.trim()+"' ");
return (retorno == 1);//se for igual a 1 retorna true
}
catch(SQLException e)
{
System.out.println("Falha na atualizacao do banco de dados "+ e.getMessage());
return (false);
}
}
public void carregaAlunos()
{
try
{
v = new Vector();
Aluno temp;
rs = st.executeQuery ("SELECT * from Alunos");
while(rs.next())
{
temp = new Aluno();
temp.nome = rs.getString(1); // nome
temp.idade = rs.getString(2); // idade
v.addElement(temp);
}
}
catch(SQLException e)
{
System.out.println("Falha ao carregar dados do banco de dados "+ e.getMessage());
}
}
public int totalAlunos() {
return v.size();
}
public Aluno alunoCorrente()
{
return (Aluno) v.elementAt(registroCorrente);
}
public void proximoAluno()
{
registroCorrente++;
if(registroCorrente >= v.size())
{
registroCorrente = 0;
}
}
public void fechar()
{
try
{
con.close();
}
catch(SQLException e)
{
System.out.println("Falha na conexao com o banco de dados "+ e.getMessage());
}
}
}