Duvida para fazer um botão proximo utilizando select * from

Olá, estou com o seguinte problema, estou querendo fazer 2 botões, um próximo para quando clicar nele, ele mostrar o primeiro registro no banco dados, quando clicar novamento, ira mostrar o segundo registro, e assim por diante, o outro botão é o anterior, que faz o inverso. Criei um evento no botão proximo, porém ele esta indo direto para o ultimo registro do banco de dados, alguem pode me ajudar? estou utilizando o bd Oracle 11g, obrigado.

[code]
btProximo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

				try{
					
					String query = "SELECT * FROM TESTE";
					
					PreparedStatement ps = conn.prepareStatement(query);

					ResultSet resultSet = ps.executeQuery(query);

					while (resultSet.next()){;

						String codMatricula = String.valueOf(resultSet.getInt("CODIGO"));	
						tfMatricula.setText(codMatricula);
						tfNome.setText(resultSet.getString("NOME"));                        //setando o valor obtido do resultSet direto no JTextField
						tfEndereco.setText(resultSet.getString("ENDERECO"));
						tfCidade.setText(resultSet.getString("CIDADE"));
						cbUf.setSelectedItem(resultSet.getString("ESTADO"));
						jftfMensalidade.setText(resultSet.getString("MENSALIDADE"));
						jftfNascimento.setText(resultSet.getDate("DATA_NASCIMENTO").toString());
					}
				}
				catch(Exception ex) {
					ex.printStackTrace();
					JOptionPane.showMessageDialog(null, "Falha na conexão: " + ex.getMessage());
				}
			}
		});[/code]

É necessário mesmo ir no banco toda vez que clicar no botão?

Pode trazer os dados e armazena-los numa lista, e dando um get nessa lista informando o index.

Dai vc ia ter q criar uma forma de como ia trabalhar com esse index.

Abrs

Faz como o amigo de cima falou, coloca tudo numa lista e vai andando nela, cria um atributo estático e quando vc clicar no próximo vc incrementa ele e anda com a lista e faz o contrário caso ande pra trás.